From: Eduardo San Martin Morote Date: Mon, 25 Oct 2021 15:42:07 +0000 (+0200) Subject: build: refactor exported files X-Git-Tag: @pinia/nuxt@0.1.0~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=34d7586bc5a1b9d612bff8ed9968b868b2c54a40;p=thirdparty%2Fvuejs%2Fpinia.git build: refactor exported files --- diff --git a/packages/nuxt/src/index.ts b/packages/nuxt/src/index.ts index a6fd55a8..f579b099 100644 --- a/packages/nuxt/src/index.ts +++ b/packages/nuxt/src/index.ts @@ -30,7 +30,7 @@ const module = defineNuxtModule({ // 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') }) diff --git a/packages/pinia/.gitignore b/packages/pinia/.gitignore index e442dc87..e69de29b 100644 --- a/packages/pinia/.gitignore +++ b/packages/pinia/.gitignore @@ -1 +0,0 @@ -index.mjs diff --git a/packages/pinia/index.cjs b/packages/pinia/index.cjs new file mode 100644 index 00000000..9fc1f5cb --- /dev/null +++ b/packages/pinia/index.cjs @@ -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') +} diff --git a/packages/pinia/index.js b/packages/pinia/index.js index e2b094b3..9fc1f5cb 100644 --- a/packages/pinia/index.js +++ b/packages/pinia/index.js @@ -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') } diff --git a/packages/pinia/package.json b/packages/pinia/package.json index da9d2fba..b247882a 100644 --- a/packages/pinia/package.json +++ b/packages/pinia/package.json @@ -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" ], diff --git a/rollup.config.js b/rollup.config.js index fa144fb7..a4d46187 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -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, }, [