]> git.ipfire.org Git - thirdparty/vuejs/pinia.git/commitdiff
build: refactor exported files
authorEduardo San Martin Morote <posva13@gmail.com>
Mon, 25 Oct 2021 15:42:07 +0000 (17:42 +0200)
committerEduardo San Martin Morote <posva13@gmail.com>
Mon, 25 Oct 2021 15:42:07 +0000 (17:42 +0200)
packages/nuxt/src/index.ts
packages/pinia/.gitignore
packages/pinia/index.cjs [new file with mode: 0644]
packages/pinia/index.js
packages/pinia/package.json
rollup.config.js

index a6fd55a8d25dfed5432b85d185175e4b86f79aa1..f579b099cd8ce12b4b4f55c1ade0d7cf48f9ca5c 100644 (file)
@@ -30,7 +30,7 @@ const module = defineNuxtModule<PiniaNuxtOptions>({
 
     // make sure we use the mjs for pinia so node doesn't complain about using a module js with an extension that is js
     // but doesn't have the type: module in its packages.json file
-    nuxt.options.alias.pinia = 'pinia/index.mjs'
+    nuxt.options.alias.pinia = 'pinia/dist/pinia.mjs'
 
     addPlugin({ src: require.resolve('./templates/plugin.mjs') })
 
index e442dc8702bd4af400247416eb3383af5329d839..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-index.mjs
diff --git a/packages/pinia/index.cjs b/packages/pinia/index.cjs
new file mode 100644 (file)
index 0000000..9fc1f5c
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/pinia.prod.cjs')
+} else {
+  module.exports = require('./dist/pinia.cjs')
+}
index e2b094b3f8e3daf9a45a135345a04d1848adb1ea..9fc1f5cb6033dff429171980de81a9104f0f5024 100644 (file)
@@ -1,7 +1,7 @@
 'use strict'
 
 if (process.env.NODE_ENV === 'production') {
-  module.exports = require('./dist/pinia.cjs.prod.js')
+  module.exports = require('./dist/pinia.prod.cjs')
 } else {
-  module.exports = require('./dist/pinia.cjs.js')
+  module.exports = require('./dist/pinia.cjs')
 }
index da9d2fba5c7e24a318db1ae88a586db8aa376428..b247882ad343e7c818007ae7c35514e0be4f5d5f 100644 (file)
@@ -3,20 +3,28 @@
   "version": "2.0.0-rc.14",
   "description": "Intuitive, type safe and flexible Store for Vue",
   "main": "index.js",
-  "module": "dist/pinia.esm-bundler.js",
+  "module": "dist/pinia.mjs",
   "unpkg": "dist/pinia.iife.js",
   "jsdelivr": "dist/pinia.iife.js",
   "types": "dist/pinia.d.ts",
   "exports": {
     ".": {
-      "import": {
-        "node": "./index.mjs",
-        "default": "./dist/pinia.esm-bundler.js"
+      "browser": "./dist/pinia.esm-browser.js",
+      "node": {
+        "import": {
+          "production": "./dist/pinia.prod.cjs",
+          "development": "./dist/pinia.mjs",
+          "default": "./dist/pinia.mjs"
+        },
+        "require": {
+          "production": "./dist/pinia.prod.cjs",
+          "development": "./dist/pinia.cjs",
+          "default": "./index.js"
+        }
       },
-      "require": "./index.js"
+      "import": "./dist/pinia.mjs"
     },
     "./package.json": "./package.json",
-    "./index.mjs": "./index.mjs",
     "./dist/*": "./dist/*"
   },
   "sideEffects": false,
@@ -26,7 +34,7 @@
   },
   "funding": "https://github.com/sponsors/posva",
   "scripts": {
-    "build": "rimraf dist && rollup -c ../../rollup.config.js --environment TARGET:pinia && cp dist/pinia.esm-bundler.js index.mjs",
+    "build": "rimraf dist && rollup -c ../../rollup.config.js --environment TARGET:pinia",
     "build:dts": "api-extractor run --local --verbose && tail -n +3 ./src/globalExtensions.ts >> dist/pinia.d.ts",
     "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . -l pinia -r 1",
     "test:dts": "tsc -p ./test-dts/tsconfig.json",
@@ -38,7 +46,7 @@
     "dist/*.cjs",
     "dist/pinia.d.ts",
     "index.js",
-    "index.mjs",
+    "index.cjs",
     "LICENSE",
     "README.md"
   ],
index fa144fb753c2db6ae326a3f706ed909df3071d64..a4d46187c2e189458f6f3bc3042121472b04e286 100644 (file)
@@ -46,35 +46,38 @@ const outputConfigs = {
     format: `es`,
   },
   cjs: {
-    file: pkg.module.replace('esm-bundler', 'cjs'),
+    file: pkg.module.replace('mjs', 'cjs'),
     format: `cjs`,
   },
   global: {
     file: pkg.unpkg,
     format: `iife`,
   },
+  browser: {
+    file: 'dist/pinia.esm-browser.js',
+    format: `es`,
+  },
 }
 
-const allFormats = Object.keys(outputConfigs)
-const packageFormats = allFormats
-const packageConfigs = packageFormats.map((format) =>
+const packageBuilds = Object.keys(outputConfigs)
+const packageConfigs = packageBuilds.map((format) =>
   createConfig(format, outputConfigs[format])
 )
 
 // only add the production ready if we are bundling the options
-packageFormats.forEach((format) => {
-  if (format === 'cjs') {
-    packageConfigs.push(createProductionConfig(format))
-  } else if (format === 'global') {
-    packageConfigs.push(createMinifiedConfig(format))
+packageBuilds.forEach((buildName) => {
+  if (buildName === 'cjs') {
+    packageConfigs.push(createProductionConfig(buildName))
+  } else if (buildName === 'global') {
+    packageConfigs.push(createMinifiedConfig(buildName))
   }
 })
 
 export default packageConfigs
 
-function createConfig(format, output, plugins = []) {
+function createConfig(buildName, output, plugins = []) {
   if (!output) {
-    console.log(require('chalk').yellow(`invalid format: "${format}"`))
+    console.log(require('chalk').yellow(`invalid format: "${buildName}"`))
     process.exit(1)
   }
 
@@ -87,11 +90,11 @@ function createConfig(format, output, plugins = []) {
     '@vue/composition-api': 'vueCompositionApi',
   }
 
-  const isProductionBuild = output.file.endsWith('.prod.js')
-  const isGlobalBuild = format === 'global'
-  const isRawESMBuild = format === 'esm'
-  const isNodeBuild = format === 'cjs'
-  const isBundlerESMBuild = format === 'esm' || format === 'mjs'
+  const isProductionBuild = /\.prod\.[cmj]s$/.test(output.file)
+  const isGlobalBuild = buildName === 'global'
+  const isRawESMBuild = buildName === 'browser'
+  const isNodeBuild = buildName === 'cjs'
+  const isBundlerESMBuild = buildName === 'browser' || buildName === 'mjs'
 
   if (isGlobalBuild) output.name = pascalcase(pkg.name)
 
@@ -191,13 +194,11 @@ function createReplacePlugin(
   })
 }
 
-function getProdFileName(format, name) {
-  return `dist/${name}.${format}.prod.js`
-}
-
 function createProductionConfig(format) {
+  const extension = format === 'cjs' ? 'cjs' : 'js'
+  const descriptor = format === 'cjs' ? '' : `.${format}`
   return createConfig(format, {
-    file: getProdFileName(format, name),
+    file: `dist/${name}${descriptor}.prod.${extension}`,
     format: outputConfigs[format].format,
   })
 }
@@ -207,7 +208,7 @@ function createMinifiedConfig(format) {
   return createConfig(
     format,
     {
-      file: getProdFileName(format, name),
+      file: `dist/${name}.${format === 'global' ? 'iife' : format}.prod.js`,
       format: outputConfigs[format].format,
     },
     [