From bdd1e03693cbbc8bace065c519b1c559b2a0a2f1 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Sat, 30 Nov 2019 20:45:14 +0100 Subject: [PATCH] Use export mode "auto" by default when preserving modules (#3265) * Treat all modules as entry modules with regard to the export mode when preserving modules * Test export mode warnings with preserveModules * Aggregate warnings * Add __esModule attribute to named export chunks when preserving modules * Improve coverage --- LICENSE.md | 2 +- cli/run/batchWarnings.ts | 151 ++++++++++-------- docs/01-command-line-reference.md | 16 ++ docs/999-big-list-of-options.md | 42 +++++ src/Chunk.ts | 6 +- src/finalisers/shared/getExportBlock.ts | 1 + src/rollup/index.ts | 18 ++- src/utils/error.ts | 35 ++++ src/utils/getExportMode.ts | 40 +---- test/chunking-form/index.js | 16 +- .../chunk-export-deshadowing/_config.js | 1 + .../samples/chunk-live-bindings/_config.js | 1 + .../samples/circular-entry-points/_config.js | 1 + .../samples/empty-chunks/_config.js | 1 + .../samples/missing-export-compact/_config.js | 1 + .../_config.js | 1 + .../_expected/amd/dep1.js | 2 + .../_expected/amd/dep2.js | 2 + .../_expected/cjs/dep1.js | 2 + .../_expected/cjs/dep2.js | 2 + .../samples/missing-export/_config.js | 1 + .../_config.js | 7 + .../_expected/amd/default.js | 7 + .../_expected/amd/main.js | 10 ++ .../_expected/amd/named.js | 9 ++ .../_expected/cjs/default.js | 5 + .../_expected/cjs/main.js | 11 ++ .../_expected/cjs/named.js | 7 + .../_expected/es/default.js | 3 + .../_expected/es/main.js | 8 + .../_expected/es/named.js | 3 + .../_expected/system/default.js | 10 ++ .../_expected/system/main.js | 20 +++ .../_expected/system/named.js | 10 ++ .../default.js | 1 + .../preserve-modules-auto-export-mode/main.js | 8 + .../named.js | 1 + .../preserve-modules-commonjs/_config.js | 1 + .../amd/_virtual/_external_commonjs-external | 4 +- .../amd/_virtual/other.js_commonjs-proxy | 4 +- .../_expected/amd/commonjs.js | 6 +- .../_expected/amd/other.js | 2 + .../cjs/_virtual/_external_commonjs-external | 2 +- .../cjs/_virtual/other.js_commonjs-proxy | 2 +- .../_expected/cjs/commonjs.js | 6 +- .../_expected/cjs/other.js | 2 + .../_expected/amd/dynamic-included.js | 2 + .../_expected/cjs/dynamic-included.js | 2 + .../_expected/amd/m1.js | 6 +- .../_expected/amd/m2.js | 4 +- .../_expected/amd/m3.js | 4 +- .../_expected/cjs/m1.js | 6 +- .../_expected/cjs/m2.js | 2 +- .../_expected/cjs/m3.js | 2 +- .../_expected/amd/main.js | 2 +- .../_expected/amd/two.js | 4 +- .../_expected/cjs/main.js | 2 +- .../_expected/cjs/two.js | 2 +- .../_expected/amd/dep.js | 2 + .../_expected/cjs/dep.js | 2 + .../_expected/amd/entry-foo-amd-ts.ts.js | 4 +- .../_expected/amd/entry-main-amd-ts.ts.js | 8 +- .../_expected/amd/entry-no-ext-amd-.js | 4 +- .../amd/nested/entry-bar-amd-ts.ts.js | 4 +- .../amd/nested/entry-baz-amd-ts.ts.js | 4 +- .../_expected/cjs/entry-foo-cjs-ts.ts.js | 2 +- .../_expected/cjs/entry-main-cjs-ts.ts.js | 8 +- .../_expected/cjs/entry-no-ext-cjs-.js | 2 +- .../cjs/nested/entry-bar-cjs-ts.ts.js | 2 +- .../cjs/nested/entry-baz-cjs-ts.ts.js | 2 +- .../_config.js | 10 ++ .../_expected/amd/default.js | 9 ++ .../_expected/amd/main.js | 12 ++ .../_expected/amd/named.js | 9 ++ .../_expected/cjs/default.js | 7 + .../_expected/cjs/main.js | 13 ++ .../_expected/cjs/named.js | 7 + .../_expected/es/default.js | 3 + .../_expected/es/main.js | 8 + .../_expected/es/named.js | 3 + .../_expected/system/default.js | 10 ++ .../_expected/system/main.js | 20 +++ .../_expected/system/named.js | 10 ++ .../default.js | 1 + .../main.js | 8 + .../named.js | 1 + .../amd/inner/more_inner/something.js | 2 + .../cjs/inner/more_inner/something.js | 2 + .../_expected/amd/dep2.js | 4 +- .../_expected/amd/main.js | 2 +- .../_expected/cjs/dep2.js | 2 +- .../_expected/cjs/main.js | 2 +- .../_expected/amd/dep.js | 2 + .../_expected/cjs/dep.js | 2 + .../_expected/amd/answer.num.js | 4 +- .../_expected/amd/lorem.str.js | 4 +- .../_expected/amd/main.js | 6 +- .../_expected/amd/no-ext.js | 4 +- .../_expected/cjs/answer.num.js | 2 +- .../_expected/cjs/lorem.str.js | 2 +- .../_expected/cjs/main.js | 6 +- .../_expected/cjs/no-ext.js | 2 +- .../_expected/amd/_virtual/_virtualModule | 2 + .../_expected/cjs/_virtual/_virtualModule | 2 + .../_expected/amd/deps/dep1.js | 2 + .../_expected/amd/deps/dep2.js | 2 + .../_expected/amd/deps/dep3.js | 2 + .../_expected/amd/lib/lib1.js | 2 + .../_expected/amd/lib/lib2.js | 2 + .../_expected/cjs/deps/dep1.js | 2 + .../_expected/cjs/deps/dep2.js | 2 + .../_expected/cjs/deps/dep3.js | 2 + .../_expected/cjs/lib/lib1.js | 2 + .../_expected/cjs/lib/lib2.js | 2 + .../samples/warn-broken-sourcemap/_config.js | 2 +- .../warn-broken-sourcemap/rollup.config.js | 12 -- .../samples/warn-broken-sourcemaps/_config.js | 18 +++ .../samples/warn-broken-sourcemaps/main.js | 1 + .../warn-broken-sourcemaps/rollup.config.js | 28 ++++ .../cli/samples/warn-import-export/_config.js | 6 +- .../warn-mixed-exports-multiple/_config.js | 20 +++ .../warn-mixed-exports-multiple/lib1.js | 2 + .../warn-mixed-exports-multiple/lib2.js | 2 + .../warn-mixed-exports-multiple/lib3.js | 2 + .../warn-mixed-exports-multiple/lib4.js | 2 + .../warn-mixed-exports-multiple/lib5.js | 2 + .../warn-mixed-exports-multiple/main.js | 17 ++ .../rollup.config.js | 7 + .../samples/default-export-mode/_config.js | 9 ++ .../default-export-mode/_expected/amd.js | 7 + .../default-export-mode/_expected/cjs.js | 5 + .../default-export-mode/_expected/es.js | 3 + .../default-export-mode/_expected/iife.js | 8 + .../default-export-mode/_expected/system.js | 10 ++ .../default-export-mode/_expected/umd.js | 11 ++ test/form/samples/default-export-mode/main.js | 1 + .../samples/export-type-mismatch-b/_config.js | 3 +- .../samples/export-type-mismatch-c/_config.js | 3 +- .../samples/export-type-mismatch/_config.js | 3 +- .../invalid-default-export-mode/_config.js | 13 ++ .../invalid-default-export-mode/main.js | 2 + .../inline-dynamic-imports}/_config.js | 0 .../inline-dynamic-imports}/lib.js | 0 .../inline-dynamic-imports}/main.js | 0 .../invalid-default-export-mode/_config.js | 15 ++ .../invalid-default-export-mode}/lib.js | 0 .../invalid-default-export-mode/main.js | 3 + .../invalid-none-export-mode/_config.js | 15 ++ .../invalid-none-export-mode}/lib.js | 0 .../invalid-none-export-mode/main.js | 3 + .../manual-chunks}/_config.js | 0 .../preserve-modules/manual-chunks/lib.js | 1 + .../manual-chunks}/main.js | 0 .../preserve-modules/mixed-exports/_config.js | 25 +++ .../preserve-modules/mixed-exports/lib1.js | 2 + .../preserve-modules/mixed-exports/lib2.js | 1 + .../preserve-modules/mixed-exports/lib3.js | 1 + .../preserve-modules/mixed-exports/main.js | 11 ++ .../optimize-chunks}/_config.js | 0 .../preserve-modules/optimize-chunks/lib.js | 1 + .../optimize-chunks}/main.js | 0 .../virtual-modules-conflict}/_config.js | 15 +- .../_virtual/_virtualModule.js | 0 .../virtual-modules-conflict}/main.js | 0 .../virtual-modules}/_config.js | 15 +- .../virtual-modules}/lib/lib.js | 0 .../virtual-modules}/main.js | 0 .../_config.js | 8 +- 168 files changed, 875 insertions(+), 216 deletions(-) create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_config.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/default.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/main.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/named.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/default.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/main.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/named.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/default.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/main.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/named.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/default.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/main.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/named.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/default.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/main.js create mode 100644 test/chunking-form/samples/preserve-modules-auto-export-mode/named.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_config.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/default.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/main.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/named.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/default.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/main.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/named.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/default.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/main.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/named.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/default.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/main.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/named.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/default.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/main.js create mode 100644 test/chunking-form/samples/preserve-modules-named-export-mode/named.js create mode 100644 test/cli/samples/warn-broken-sourcemaps/_config.js create mode 100644 test/cli/samples/warn-broken-sourcemaps/main.js create mode 100644 test/cli/samples/warn-broken-sourcemaps/rollup.config.js create mode 100644 test/cli/samples/warn-mixed-exports-multiple/_config.js create mode 100644 test/cli/samples/warn-mixed-exports-multiple/lib1.js create mode 100644 test/cli/samples/warn-mixed-exports-multiple/lib2.js create mode 100644 test/cli/samples/warn-mixed-exports-multiple/lib3.js create mode 100644 test/cli/samples/warn-mixed-exports-multiple/lib4.js create mode 100644 test/cli/samples/warn-mixed-exports-multiple/lib5.js create mode 100644 test/cli/samples/warn-mixed-exports-multiple/main.js create mode 100644 test/cli/samples/warn-mixed-exports-multiple/rollup.config.js create mode 100644 test/form/samples/default-export-mode/_config.js create mode 100644 test/form/samples/default-export-mode/_expected/amd.js create mode 100644 test/form/samples/default-export-mode/_expected/cjs.js create mode 100644 test/form/samples/default-export-mode/_expected/es.js create mode 100644 test/form/samples/default-export-mode/_expected/iife.js create mode 100644 test/form/samples/default-export-mode/_expected/system.js create mode 100644 test/form/samples/default-export-mode/_expected/umd.js create mode 100644 test/form/samples/default-export-mode/main.js create mode 100644 test/function/samples/invalid-default-export-mode/_config.js create mode 100644 test/function/samples/invalid-default-export-mode/main.js rename test/function/samples/{preserve-modules-with-inline => preserve-modules/inline-dynamic-imports}/_config.js (100%) rename test/function/samples/{preserve-modules-with-inline => preserve-modules/inline-dynamic-imports}/lib.js (100%) rename test/function/samples/{preserve-modules-with-inline => preserve-modules/inline-dynamic-imports}/main.js (100%) create mode 100644 test/function/samples/preserve-modules/invalid-default-export-mode/_config.js rename test/function/samples/{preserve-modules-with-manual => preserve-modules/invalid-default-export-mode}/lib.js (100%) create mode 100644 test/function/samples/preserve-modules/invalid-default-export-mode/main.js create mode 100644 test/function/samples/preserve-modules/invalid-none-export-mode/_config.js rename test/function/samples/{preserve-modules-with-optimize => preserve-modules/invalid-none-export-mode}/lib.js (100%) create mode 100644 test/function/samples/preserve-modules/invalid-none-export-mode/main.js rename test/function/samples/{preserve-modules-with-manual => preserve-modules/manual-chunks}/_config.js (100%) create mode 100644 test/function/samples/preserve-modules/manual-chunks/lib.js rename test/function/samples/{preserve-modules-with-manual => preserve-modules/manual-chunks}/main.js (100%) create mode 100644 test/function/samples/preserve-modules/mixed-exports/_config.js create mode 100644 test/function/samples/preserve-modules/mixed-exports/lib1.js create mode 100644 test/function/samples/preserve-modules/mixed-exports/lib2.js create mode 100644 test/function/samples/preserve-modules/mixed-exports/lib3.js create mode 100644 test/function/samples/preserve-modules/mixed-exports/main.js rename test/function/samples/{preserve-modules-with-optimize => preserve-modules/optimize-chunks}/_config.js (100%) create mode 100644 test/function/samples/preserve-modules/optimize-chunks/lib.js rename test/function/samples/{preserve-modules-with-optimize => preserve-modules/optimize-chunks}/main.js (100%) rename test/function/samples/{preserve-modules-virtual-modules-conflict => preserve-modules/virtual-modules-conflict}/_config.js (71%) rename test/function/samples/{preserve-modules-virtual-modules-conflict => preserve-modules/virtual-modules-conflict}/_virtual/_virtualModule.js (100%) rename test/function/samples/{preserve-modules-virtual-modules-conflict => preserve-modules/virtual-modules-conflict}/main.js (100%) rename test/function/samples/{preserve-modules-virtual-modules => preserve-modules/virtual-modules}/_config.js (72%) rename test/function/samples/{preserve-modules-virtual-modules => preserve-modules/virtual-modules}/lib/lib.js (100%) rename test/function/samples/{preserve-modules-virtual-modules => preserve-modules/virtual-modules}/main.js (100%) diff --git a/LICENSE.md b/LICENSE.md index a3eb335a388..993c1034873 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -382,7 +382,7 @@ Repository: sindresorhus/pretty-bytes ## pretty-ms License: MIT By: Sindre Sorhus -Repository: git+https://github.com/sindresorhus/pretty-ms.git +Repository: sindresorhus/pretty-ms --------------------------------------- diff --git a/cli/run/batchWarnings.ts b/cli/run/batchWarnings.ts index f8850c3ca38..c1d6ff9cf2a 100644 --- a/cli/run/batchWarnings.ts +++ b/cli/run/batchWarnings.ts @@ -82,13 +82,6 @@ const immediateHandlers: { stderr( `Creating a browser bundle that depends on ${detail}. You might need to include https://www.npmjs.com/package/rollup-plugin-node-builtins` ); - }, - - MIXED_EXPORTS: () => { - title('Mixing named and default exports'); - stderr( - `Consumers of your bundle will have to use bundle['default'] to access the default export, which may not be what you want. Use \`output.exports: 'named'\` to disable this warning` - ); } }; @@ -106,27 +99,19 @@ const deferredHandlers: { } }, - UNUSED_EXTERNAL_IMPORT(warnings) { - title('Unused external imports'); - for (const warning of warnings) { - stderr(`${warning.names} imported from external module '${warning.source}' but never used`); - } + EMPTY_BUNDLE(warnings) { + title( + `Generated${warnings.length === 1 ? ' an' : ''} empty ${ + warnings.length > 1 ? 'chunks' : 'chunk' + }` + ); + stderr(warnings.map(warning => warning.chunkName!).join(', ')); }, - UNRESOLVED_IMPORT(warnings) { - title('Unresolved dependencies'); - info('https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency'); - - const dependencies = new Map(); - for (const warning of warnings) { - if (!dependencies.has(warning.source)) dependencies.set(warning.source, []); - dependencies.get(warning.source).push(warning.importer); - } - - for (const dependency of dependencies.keys()) { - const importers = dependencies.get(dependency); - stderr(`${tc.bold(dependency)} (imported by ${importers.join(', ')})`); - } + EVAL(warnings) { + title('Use of eval is strongly discouraged'); + info('https://rollupjs.org/guide/en/#avoiding-eval'); + showTruncatedWarnings(warnings); }, MISSING_EXPORT(warnings) { @@ -140,21 +125,32 @@ const deferredHandlers: { } }, - THIS_IS_UNDEFINED(warnings) { - title('`this` has been rewritten to `undefined`'); - info('https://rollupjs.org/guide/en/#error-this-is-undefined'); - showTruncatedWarnings(warnings); - }, - - EVAL(warnings) { - title('Use of eval is strongly discouraged'); - info('https://rollupjs.org/guide/en/#avoiding-eval'); - showTruncatedWarnings(warnings); + MISSING_GLOBAL_NAME(warnings) { + title(`Missing global variable ${warnings.length > 1 ? 'names' : 'name'}`); + stderr( + `Use output.globals to specify browser global variable names corresponding to external modules` + ); + for (const warning of warnings) { + stderr(`${tc.bold(warning.source!)} (guessing '${warning.guess}')`); + } }, - NON_EXISTENT_EXPORT(warnings) { - title(`Import of non-existent ${warnings.length > 1 ? 'exports' : 'export'}`); - showTruncatedWarnings(warnings); + MIXED_EXPORTS: (warnings) => { + title('Mixing named and default exports'); + info(`https://rollupjs.org/guide/en/#output-exports`); + stderr( + tc.bold('The following entry modules are using named and default exports together:') + ); + const displayedWarnings = warnings.length > 5 ? warnings.slice(0, 3) : warnings; + for (const warning of displayedWarnings) { + stderr(relativeId(warning.id!)); + } + if (displayedWarnings.length < warnings.length) { + stderr(`...and ${warnings.length - displayedWarnings.length} other entry modules`); + } + stderr( + `\nConsumers of your bundle will have to use chunk['default'] to access their default export, which may not be what you want. Use \`output.exports: 'named'\` to disable this warning` + ); }, NAMESPACE_CONFLICT(warnings) { @@ -170,30 +166,9 @@ const deferredHandlers: { } }, - MISSING_GLOBAL_NAME(warnings) { - title(`Missing global variable ${warnings.length > 1 ? 'names' : 'name'}`); - stderr( - `Use output.globals to specify browser global variable names corresponding to external modules` - ); - for (const warning of warnings) { - stderr(`${tc.bold(warning.source!)} (guessing '${warning.guess}')`); - } - }, - - SOURCEMAP_BROKEN(warnings) { - title(`Broken sourcemap`); - info('https://rollupjs.org/guide/en/#warning-sourcemap-is-likely-to-be-incorrect'); - - const plugins = Array.from(new Set(warnings.map(w => w.plugin).filter(Boolean))); - const detail = - plugins.length > 1 - ? ` (such as ${plugins - .slice(0, -1) - .map(p => `'${p}'`) - .join(', ')} and '${plugins.slice(-1)}')` - : ` (such as '${plugins[0]}')`; - - stderr(`Plugins that transform code${detail} should generate accompanying sourcemaps`); + NON_EXISTENT_EXPORT(warnings) { + title(`Import of non-existent ${warnings.length > 1 ? 'exports' : 'export'}`); + showTruncatedWarnings(warnings); }, PLUGIN_WARNING(warnings) { @@ -222,13 +197,49 @@ const deferredHandlers: { } }, - EMPTY_BUNDLE(warnings) { - title( - `Generated${warnings.length === 1 ? ' an' : ''} empty ${ - warnings.length > 1 ? 'chunks' : 'chunk' - }` - ); - stderr(warnings.map(warning => warning.chunkName!).join(', ')); + SOURCEMAP_BROKEN(warnings) { + title(`Broken sourcemap`); + info('https://rollupjs.org/guide/en/#warning-sourcemap-is-likely-to-be-incorrect'); + + const plugins = Array.from(new Set(warnings.map(w => w.plugin).filter(Boolean))); + const detail = + plugins.length > 1 + ? ` (such as ${plugins + .slice(0, -1) + .map(p => `'${p}'`) + .join(', ')} and '${plugins.slice(-1)}')` + : ` (such as '${plugins[0]}')`; + + stderr(`Plugins that transform code${detail} should generate accompanying sourcemaps`); + }, + + THIS_IS_UNDEFINED(warnings) { + title('`this` has been rewritten to `undefined`'); + info('https://rollupjs.org/guide/en/#error-this-is-undefined'); + showTruncatedWarnings(warnings); + }, + + UNRESOLVED_IMPORT(warnings) { + title('Unresolved dependencies'); + info('https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency'); + + const dependencies = new Map(); + for (const warning of warnings) { + if (!dependencies.has(warning.source)) dependencies.set(warning.source, []); + dependencies.get(warning.source).push(warning.importer); + } + + for (const dependency of dependencies.keys()) { + const importers = dependencies.get(dependency); + stderr(`${tc.bold(dependency)} (imported by ${importers.join(', ')})`); + } + }, + + UNUSED_EXTERNAL_IMPORT(warnings) { + title('Unused external imports'); + for (const warning of warnings) { + stderr(`${warning.names} imported from external module '${warning.source}' but never used`); + } } }; diff --git a/docs/01-command-line-reference.md b/docs/01-command-line-reference.md index e4e76c3687e..49862a80ea6 100755 --- a/docs/01-command-line-reference.md +++ b/docs/01-command-line-reference.md @@ -187,6 +187,22 @@ export default commandLineArgs => { If you now run `rollup --config --configDebug`, the debug configuration will be used. +By default, command line arguments will always override the respective values exported from a config file. If you want to change this behaviour, you can make Rollup ignore command line arguments by deleting them from the `commandLineArgs` object: + +```javascript +// rollup.config.js +export default commandLineArgs => { + const inputBase = commandLineArgs.input || 'main.js'; + + // this will make Rollup ignore the CLI argument + delete commandLineArgs.input; + return { + input: 'src/entries/' + inputBase, + output: {...} + } +} +``` + ### Command line flags diff --git a/docs/999-big-list-of-options.md b/docs/999-big-list-of-options.md index fbf70361497..93b08e26620 100755 --- a/docs/999-big-list-of-options.md +++ b/docs/999-big-list-of-options.md @@ -572,6 +572,48 @@ Default: `false` Instead of creating as few chunks as possible, this mode will create separate chunks for all modules using the original module names as file names. Requires the [`output.dir`](guide/en/#outputdir) option. Tree-shaking will still be applied, suppressing files that are not used by the provided entry points or do not have side-effects when executed. This mode can be used to transform a file structure to a different module format. +Note that when transforming to `cjs` or `amd` format, each file will by default be treated as an entry point with [`output.exports`](guide/en/#outputexports) set to `auto`. This means that e.g. for `cjs`, a file that only contains a default export will be rendered as + +```js +// input main.js +export default 42; + +// output main.js +'use strict'; + +var main = 42; + +module.exports = main; +``` + +assigning the value directly to `module.exports`. If someone imports this file, they will get access to the default export via + +```js +const main = require('./main.js'); +console.log(main); // 42 +``` + +As with regular entry points, files that mix default and named exports will produce warnings. You can avoid the warnings by forcing all files to use named export mode via `output.exports: "named"`. In that case, the default export needs to be accessed via the `.default` property of the export: + +```js +// input main.js +export default 42; + +// output main.js +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var main = 42; + +exports.default = main; + +// consuming file +const main = require('./main.js'); +console.log(main.default); // 42 +``` + + #### strictDeprecations Type: `boolean`
CLI: `--strictDeprecations`/`--no-strictDeprecations`
diff --git a/src/Chunk.ts b/src/Chunk.ts index 4f59549e28f..550f3bb4d34 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -619,7 +619,7 @@ export default class Chunk { this.renderedSourceLength = undefined as any; this.renderedHash = undefined as any; - if (this.getExportNames().length === 0 && this.getImportIds().length === 0 && this.isEmpty) { + if (this.isEmpty && this.getExportNames().length === 0 && this.dependencies.length === 0) { const chunkName = this.getChunkName(); this.graph.warn({ chunkName, @@ -708,7 +708,9 @@ export default class Chunk { hasExports, indentString: this.indentString, intro: addons.intro as string, - isEntryModuleFacade: this.facadeModule !== null && this.facadeModule.isEntryPoint, + isEntryModuleFacade: + this.graph.preserveModules || + (this.facadeModule !== null && this.facadeModule.isEntryPoint), namedExportsMode: this.exportMode !== 'default', outro: addons.outro as string, usesTopLevelAwait, diff --git a/src/finalisers/shared/getExportBlock.ts b/src/finalisers/shared/getExportBlock.ts index a52f172cd66..266bd7e6efe 100644 --- a/src/finalisers/shared/getExportBlock.ts +++ b/src/finalisers/shared/getExportBlock.ts @@ -23,6 +23,7 @@ export default function getExportBlock( dep.namedExportsMode && expt.imported !== '*' && expt.imported !== 'default' ? `${dep.name}.${expt.imported}` : dep.name; + break; } } } diff --git a/src/rollup/index.ts b/src/rollup/index.ts index b4503c660b3..15ef60746f0 100644 --- a/src/rollup/index.ts +++ b/src/rollup/index.ts @@ -5,7 +5,12 @@ import Graph from '../Graph'; import { createAddons } from '../utils/addons'; import { assignChunkIds } from '../utils/assignChunkIds'; import commondir from '../utils/commondir'; -import { errCannotEmitFromOptionsHook, errDeprecation, error } from '../utils/error'; +import { + errCannotEmitFromOptionsHook, + errDeprecation, + errInvalidExportOptionValue, + error +} from '../utils/error'; import { writeFile } from '../utils/fs'; import getExportMode from '../utils/getExportMode'; import mergeOptions, { GenericConfigObject } from '../utils/mergeOptions'; @@ -45,6 +50,10 @@ function checkOutputOptions(options: OutputOptions) { url: `https://rollupjs.org/guide/en/#output-format` }); } + + if (options.exports && !['default', 'named', 'none', 'auto'].includes(options.exports)) { + error(errInvalidExportOptionValue(options.exports)); + } } function getAbsoluteEntryModulePaths(chunks: Chunk[]): string[] { @@ -259,8 +268,8 @@ export default async function rollup(rawInputOptions: GenericConfigObject): Prom const addons = await createAddons(outputOptions, outputPluginDriver); for (const chunk of chunks) { if (!inputOptions.preserveModules) chunk.generateInternalExports(outputOptions); - if (chunk.facadeModule && chunk.facadeModule.isEntryPoint) - chunk.exportMode = getExportMode(chunk, outputOptions); + if (inputOptions.preserveModules || (chunk.facadeModule && chunk.facadeModule.isEntryPoint)) + chunk.exportMode = getExportMode(chunk, outputOptions, chunk.facadeModule!.id); } for (const chunk of chunks) { chunk.preRender(outputOptions, inputBase); @@ -403,7 +412,8 @@ function createOutput(outputBundle: Record outputBundle[fileName]) .filter(outputFile => Object.keys(outputFile).length > 0) as ( | OutputChunk - | OutputAsset)[]).sort((outputFileA, outputFileB) => { + | OutputAsset + )[]).sort((outputFileA, outputFileB) => { const fileTypeA = getSortingFileType(outputFileA); const fileTypeB = getSortingFileType(outputFileB); if (fileTypeA === fileTypeB) return 0; diff --git a/src/utils/error.ts b/src/utils/error.ts index 351436f487d..9adad000a88 100644 --- a/src/utils/error.ts +++ b/src/utils/error.ts @@ -44,10 +44,12 @@ export enum Errors { FILE_NAME_CONFLICT = 'FILE_NAME_CONFLICT', INPUT_HOOK_IN_OUTPUT_PLUGIN = 'INPUT_HOOK_IN_OUTPUT_PLUGIN', INVALID_CHUNK = 'INVALID_CHUNK', + INVALID_EXPORT_OPTION = 'INVALID_EXPORT_OPTION', INVALID_EXTERNAL_ID = 'INVALID_EXTERNAL_ID', INVALID_OPTION = 'INVALID_OPTION', INVALID_PLUGIN_HOOK = 'INVALID_PLUGIN_HOOK', INVALID_ROLLUP_PHASE = 'INVALID_ROLLUP_PHASE', + MIXED_EXPORTS = 'MIXED_EXPORTS', NAMESPACE_CONFLICT = 'NAMESPACE_CONFLICT', PLUGIN_ERROR = 'PLUGIN_ERROR', UNRESOLVED_ENTRY = 'UNRESOLVED_ENTRY', @@ -147,6 +149,27 @@ export function errCannotAssignModuleToChunk( }; } +export function errInvalidExportOptionValue(optionValue: string) { + return { + code: Errors.INVALID_EXPORT_OPTION, + message: `"output.exports" must be "default", "named", "none", "auto", or left unspecified (defaults to "auto"), received "${optionValue}"`, + url: `https://rollupjs.org/guide/en/#output-exports` + }; +} + +export function errIncompatibleExportOptionValue( + optionValue: string, + keys: string[], + entryModule: string +) { + return { + code: 'INVALID_EXPORT_OPTION', + message: `"${optionValue}" was specified for "output.exports", but entry module "${relativeId( + entryModule + )}" has the following exports: ${keys.join(', ')}` + }; +} + export function errInternalIdCannotBeExternal(source: string, importer: string) { return { code: Errors.INVALID_EXTERNAL_ID, @@ -177,6 +200,18 @@ export function errInvalidRollupPhaseForChunkEmission() { }; } +export function errMixedExport(facadeModuleId: string, name?: string) { + return { + code: Errors.MIXED_EXPORTS, + id: facadeModuleId, + message: `Entry module "${relativeId( + facadeModuleId + )}" is using named and default exports together. Consumers of your bundle will have to use \`${name || + 'chunk'}["default"]\` to access the default export, which may not be what you want. Use \`output.exports: "named"\` to disable this warning`, + url: `https://rollupjs.org/guide/en/#output-exports` + }; +} + export function errNamespaceConflict( name: string, reexportingModule: Module, diff --git a/src/utils/getExportMode.ts b/src/utils/getExportMode.ts index 8d95ba80d01..0387a64074c 100644 --- a/src/utils/getExportMode.ts +++ b/src/utils/getExportMode.ts @@ -1,28 +1,20 @@ import Chunk from '../Chunk'; import { OutputOptions } from '../rollup/types'; -import { error } from './error'; - -function badExports(option: string, keys: string[]) { - error({ - code: 'INVALID_EXPORT_OPTION', - message: `'${option}' was specified for output.exports, but entry module has following exports: ${keys.join( - ', ' - )}` - }); -} +import { errIncompatibleExportOptionValue, errMixedExport, error } from './error'; export default function getExportMode( chunk: Chunk, - { exports: exportMode, name, format }: OutputOptions + { exports: exportMode, name, format }: OutputOptions, + facadeModuleId: string ) { const exportKeys = chunk.getExportNames(); if (exportMode === 'default') { if (exportKeys.length !== 1 || exportKeys[0] !== 'default') { - badExports('default', exportKeys); + error(errIncompatibleExportOptionValue('default', exportKeys, facadeModuleId)); } } else if (exportMode === 'none' && exportKeys.length) { - badExports('none', exportKeys); + error(errIncompatibleExportOptionValue('none', exportKeys, facadeModuleId)); } if (!exportMode || exportMode === 'auto') { @@ -31,30 +23,12 @@ export default function getExportMode( } else if (exportKeys.length === 1 && exportKeys[0] === 'default') { exportMode = 'default'; } else { - if ( - chunk.facadeModule !== null && - chunk.facadeModule.isEntryPoint && - format !== 'es' && - exportKeys.indexOf('default') !== -1 - ) { - chunk.graph.warn({ - code: 'MIXED_EXPORTS', - message: `Using named and default exports together. Consumers of your bundle will have to use ${name || - 'bundle'}['default'] to access the default export, which may not be what you want. Use \`output.exports: 'named'\` to disable this warning`, - url: `https://rollupjs.org/guide/en/#output-exports` - }); + if (format !== 'es' && exportKeys.indexOf('default') !== -1) { + chunk.graph.warn(errMixedExport(facadeModuleId, name)); } exportMode = 'named'; } } - if (!/(?:default|named|none)/.test(exportMode)) { - error({ - code: 'INVALID_EXPORT_OPTION', - message: `output.exports must be 'default', 'named', 'none', 'auto', or left unspecified (defaults to 'auto')`, - url: `https://rollupjs.org/guide/en/#output-exports` - }); - } - return exportMode; } diff --git a/test/chunking-form/index.js b/test/chunking-form/index.js index 420111fd42d..d9fdab1a593 100644 --- a/test/chunking-form/index.js +++ b/test/chunking-form/index.js @@ -19,10 +19,18 @@ runTestSuiteWithSamples('chunking form', path.resolve(__dirname, 'samples'), (di extend( { input: [dir + '/main.js'], - onwarn: msg => { - if (/No name was provided for/.test(msg)) return; - if (/as external dependency/.test(msg)) return; - console.error(msg); + onwarn: warning => { + if ( + !( + config.expectedWarnings && + config.expectedWarnings.indexOf(warning.code) >= 0 + ) + ) { + throw new Error( + `Unexpected warnings (${warning.code}): ${warning.message}\n` + + 'If you expect warnings, list their codes in config.expectedWarnings' + ); + } }, strictDeprecations: true }, diff --git a/test/chunking-form/samples/chunk-export-deshadowing/_config.js b/test/chunking-form/samples/chunk-export-deshadowing/_config.js index 1c391fe5ad5..5301c6b729b 100644 --- a/test/chunking-form/samples/chunk-export-deshadowing/_config.js +++ b/test/chunking-form/samples/chunk-export-deshadowing/_config.js @@ -1,5 +1,6 @@ module.exports = { description: 'chunk export deshadowing', + expectedWarnings: ['CIRCULAR_DEPENDENCY'], options: { input: ['main1.js', 'main2.js'] } diff --git a/test/chunking-form/samples/chunk-live-bindings/_config.js b/test/chunking-form/samples/chunk-live-bindings/_config.js index e98e6e06da5..85aeb5f738b 100644 --- a/test/chunking-form/samples/chunk-live-bindings/_config.js +++ b/test/chunking-form/samples/chunk-live-bindings/_config.js @@ -1,5 +1,6 @@ module.exports = { description: 'ES module live bindings in chunks', + expectedWarnings: ['CIRCULAR_DEPENDENCY'], options: { input: ['main1.js', 'main2.js'] } diff --git a/test/chunking-form/samples/circular-entry-points/_config.js b/test/chunking-form/samples/circular-entry-points/_config.js index b0bfc3ad906..c594e1ff53b 100644 --- a/test/chunking-form/samples/circular-entry-points/_config.js +++ b/test/chunking-form/samples/circular-entry-points/_config.js @@ -1,5 +1,6 @@ module.exports = { description: 'chunking circular entry points', + expectedWarnings: ['CIRCULAR_DEPENDENCY'], options: { input: ['main1.js', 'main2.js'] } diff --git a/test/chunking-form/samples/empty-chunks/_config.js b/test/chunking-form/samples/empty-chunks/_config.js index 1f0ee019d33..4f26f947897 100644 --- a/test/chunking-form/samples/empty-chunks/_config.js +++ b/test/chunking-form/samples/empty-chunks/_config.js @@ -1,5 +1,6 @@ module.exports = { description: 'empty chunk pruning', + expectedWarnings: ['EMPTY_BUNDLE'], options: { input: ['main1.js', 'main2.js'] } diff --git a/test/chunking-form/samples/missing-export-compact/_config.js b/test/chunking-form/samples/missing-export-compact/_config.js index 122835cd8e9..236f582eb45 100644 --- a/test/chunking-form/samples/missing-export-compact/_config.js +++ b/test/chunking-form/samples/missing-export-compact/_config.js @@ -1,5 +1,6 @@ module.exports = { description: 'missing export compact', + expectedWarnings: ['SHIMMED_EXPORT'], options: { input: ['main.js', 'dep.js'], shimMissingExports: true, diff --git a/test/chunking-form/samples/missing-export-reused-deconflicting/_config.js b/test/chunking-form/samples/missing-export-reused-deconflicting/_config.js index 2c5ea7d1b80..6244f66663a 100644 --- a/test/chunking-form/samples/missing-export-reused-deconflicting/_config.js +++ b/test/chunking-form/samples/missing-export-reused-deconflicting/_config.js @@ -1,5 +1,6 @@ module.exports = { description: 'handles using dependencies with shimmed missing exports as ', + expectedWarnings: ['SHIMMED_EXPORT'], options: { input: ['main.js'], preserveModules: true, diff --git a/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/amd/dep1.js b/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/amd/dep1.js index 03bafc628d6..4e6617810fb 100644 --- a/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/amd/dep1.js +++ b/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/amd/dep1.js @@ -14,4 +14,6 @@ define(['exports'], function (exports) { 'use strict'; exports.missing1 = _missingExportShim; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/amd/dep2.js b/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/amd/dep2.js index 221b96174a7..c9382183868 100644 --- a/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/amd/dep2.js +++ b/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/amd/dep2.js @@ -11,4 +11,6 @@ define(['exports'], function (exports) { 'use strict'; exports.missing2 = _missingExportShim; exports.previousShimmedExport = _missingExportShim$1; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/cjs/dep1.js b/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/cjs/dep1.js index a024bcd6f7f..58c566f2849 100644 --- a/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/cjs/dep1.js +++ b/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/cjs/dep1.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + var _missingExportShim = void 0; console.log('This is the output when a missing export is used internally but not reexported'); diff --git a/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/cjs/dep2.js b/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/cjs/dep2.js index f411ae56976..8a01d991453 100644 --- a/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/cjs/dep2.js +++ b/test/chunking-form/samples/missing-export-reused-deconflicting/_expected/cjs/dep2.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + var _missingExportShim = void 0; console.log('This is the output when a missing export is reexported'); diff --git a/test/chunking-form/samples/missing-export/_config.js b/test/chunking-form/samples/missing-export/_config.js index 41663418a69..bd55b234392 100644 --- a/test/chunking-form/samples/missing-export/_config.js +++ b/test/chunking-form/samples/missing-export/_config.js @@ -1,5 +1,6 @@ module.exports = { description: 'missing export', + expectedWarnings: ['SHIMMED_EXPORT', 'MIXED_EXPORTS'], options: { input: ['main.js', 'dep.js'], shimMissingExports: true diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_config.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_config.js new file mode 100644 index 00000000000..647ad33e23b --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: 'Uses entry point semantics for all files when preserving modules', + options: { + input: 'main.js', + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/default.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/default.js new file mode 100644 index 00000000000..9101b3f3d25 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/default.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var foo = 'default'; + + return foo; + +}); diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/main.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/main.js new file mode 100644 index 00000000000..d94d10667e3 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/main.js @@ -0,0 +1,10 @@ +define(['require', './default', './named'], function (require, _default, named) { 'use strict'; + + console.log(_default, named.value); + + new Promise(function (resolve, reject) { require(['./default'], function (m) { resolve({ 'default': m }); }, reject) }).then(result => console.log(result.default)); + new Promise(function (resolve, reject) { require(['./named'], resolve, reject) }).then(result => console.log(result.value)); + + return _default; + +}); diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/named.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/named.js new file mode 100644 index 00000000000..37e6d25bd85 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/amd/named.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const value = 'named'; + + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/default.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/default.js new file mode 100644 index 00000000000..f670b985a61 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/default.js @@ -0,0 +1,5 @@ +'use strict'; + +var foo = 'default'; + +module.exports = foo; diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/main.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/main.js new file mode 100644 index 00000000000..1fb68401aee --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/main.js @@ -0,0 +1,11 @@ +'use strict'; + +var _default = require('./default.js'); +var named = require('./named.js'); + +console.log(_default, named.value); + +new Promise(function (resolve) { resolve({ 'default': require('./default.js') }); }).then(result => console.log(result.default)); +new Promise(function (resolve) { resolve(require('./named.js')); }).then(result => console.log(result.value)); + +module.exports = _default; diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/named.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/named.js new file mode 100644 index 00000000000..491f8569447 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/cjs/named.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const value = 'named'; + +exports.value = value; diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/default.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/default.js new file mode 100644 index 00000000000..97dcda8cdc9 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/default.js @@ -0,0 +1,3 @@ +var foo = 'default'; + +export default foo; diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/main.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/main.js new file mode 100644 index 00000000000..1db891a835f --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/main.js @@ -0,0 +1,8 @@ +import foo from './default.js'; +export { default } from './default.js'; +import { value } from './named.js'; + +console.log(foo, value); + +import('./default.js').then(result => console.log(result.default)); +import('./named.js').then(result => console.log(result.value)); diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/named.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/named.js new file mode 100644 index 00000000000..f632590076b --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/es/named.js @@ -0,0 +1,3 @@ +const value = 'named'; + +export { value }; diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/default.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/default.js new file mode 100644 index 00000000000..0505d3144dd --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/default.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var foo = exports('default', 'default'); + + } + }; +}); diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/main.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/main.js new file mode 100644 index 00000000000..12e707aee57 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/main.js @@ -0,0 +1,20 @@ +System.register(['./default.js', './named.js'], function (exports, module) { + 'use strict'; + var foo, value; + return { + setters: [function (module) { + foo = module.default; + exports('default', module.default); + }, function (module) { + value = module.value; + }], + execute: function () { + + console.log(foo, value); + + module.import('./default.js').then(result => console.log(result.default)); + module.import('./named.js').then(result => console.log(result.value)); + + } + }; +}); diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/named.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/named.js new file mode 100644 index 00000000000..431654fc285 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_expected/system/named.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const value = exports('value', 'named'); + + } + }; +}); diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/default.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/default.js new file mode 100644 index 00000000000..413f601a377 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/default.js @@ -0,0 +1 @@ +export default 'default'; diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/main.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/main.js new file mode 100644 index 00000000000..72dc390d821 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/main.js @@ -0,0 +1,8 @@ +import foo from './default.js'; +import { value } from './named.js'; +console.log(foo, value); + +export { default } from './default.js'; + +import('./default').then(result => console.log(result.default)); +import('./named').then(result => console.log(result.value)); diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/named.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/named.js new file mode 100644 index 00000000000..a5c403fef99 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/named.js @@ -0,0 +1 @@ +export const value = 'named'; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_config.js b/test/chunking-form/samples/preserve-modules-commonjs/_config.js index 39b0a3c6e4a..9311d30bf1f 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_config.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_config.js @@ -2,6 +2,7 @@ const commonjs = require('rollup-plugin-commonjs'); module.exports = { description: 'Handles output from rollup-plugin-commonjs', + expectedWarnings: ['MIXED_EXPORTS'], options: { input: 'main.js', preserveModules: true, diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external index a066f897989..ad2b06d6161 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external @@ -1,9 +1,9 @@ -define(['exports', 'external'], function (exports, external) { 'use strict'; +define(['external'], function (external) { 'use strict'; external = external && external.hasOwnProperty('default') ? external['default'] : external; - exports.default = external; + return external; }); diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-proxy b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-proxy index 077f7c6892d..8aef7b7519c 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-proxy +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-proxy @@ -1,7 +1,7 @@ -define(['exports', '../other'], function (exports, other) { 'use strict'; +define(['../other'], function (other) { 'use strict'; - exports.default = other.__moduleExports; + return other.__moduleExports; }); diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/commonjs.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/commonjs.js index f9724402a16..6f1ab74a4e9 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/commonjs.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/commonjs.js @@ -2,13 +2,15 @@ define(['exports', 'external', './other', './_virtual/_external_commonjs-externa external = external && external.hasOwnProperty('default') ? external['default'] : external; - const { value } = other$1.default; + const { value } = other$1; - console.log(_external_commonjsExternal.default, value); + console.log(_external_commonjsExternal, value); var commonjs = 42; exports.__moduleExports = commonjs; exports.default = commonjs; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/other.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/other.js index 1a2f6aee042..9e1599a6ab5 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/other.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/other.js @@ -9,4 +9,6 @@ define(['exports'], function (exports) { 'use strict'; exports.__moduleExports = other; exports.value = value; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/_external_commonjs-external b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/_external_commonjs-external index 574ae3aa425..c823462ee46 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/_external_commonjs-external +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/_external_commonjs-external @@ -6,4 +6,4 @@ var external = _interopDefault(require('external')); -exports.default = external; +module.exports = external; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-proxy b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-proxy index 38113e1c00d..7160a940c0b 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-proxy +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-proxy @@ -4,4 +4,4 @@ var other = require('../other.js'); -exports.default = other.__moduleExports; +module.exports = other.__moduleExports; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/commonjs.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/commonjs.js index fee76c2bbd4..d6feb15e433 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/commonjs.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/commonjs.js @@ -1,13 +1,15 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + require('external'); require('./other.js'); var _external_commonjsExternal = require('./_virtual/_external_commonjs-external'); var other$1 = require('./_virtual/other.js_commonjs-proxy'); -const { value } = other$1.default; +const { value } = other$1; -console.log(_external_commonjsExternal.default, value); +console.log(_external_commonjsExternal, value); var commonjs = 42; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/other.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/other.js index e105dd53271..b1f38d1696a 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/other.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/other.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + var value = 43; var other = { diff --git a/test/chunking-form/samples/preserve-modules-dynamic-imports/_expected/amd/dynamic-included.js b/test/chunking-form/samples/preserve-modules-dynamic-imports/_expected/amd/dynamic-included.js index cf69ecdb66b..afd117130dc 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-imports/_expected/amd/dynamic-included.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-imports/_expected/amd/dynamic-included.js @@ -4,4 +4,6 @@ define(['exports'], function (exports) { 'use strict'; exports.value = value; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules-dynamic-imports/_expected/cjs/dynamic-included.js b/test/chunking-form/samples/preserve-modules-dynamic-imports/_expected/cjs/dynamic-included.js index 7ce0b0473fe..2c8d642e303 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-imports/_expected/cjs/dynamic-included.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-imports/_expected/cjs/dynamic-included.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + const value = 'included'; exports.value = value; diff --git a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m1.js b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m1.js index 1994dfa24ea..25f53d93a63 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m1.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m1.js @@ -2,7 +2,9 @@ define(['exports', './m2', './m3'], function (exports, m2, m3) { 'use strict'; - exports.m2 = m2.default; - exports.m3 = m3.default; + exports.m2 = m2; + exports.m3 = m3; + + Object.defineProperty(exports, '__esModule', { value: true }); }); diff --git a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m2.js b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m2.js index 2ade9265476..22e08de419f 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m2.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m2.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var m2 = {a:1}; - exports.default = m2; + return m2; }); diff --git a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m3.js b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m3.js index 7f26f198b02..685448b54a5 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m3.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/amd/m3.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var m3 = {b:2}; - exports.default = m3; + return m3; }); diff --git a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m1.js b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m1.js index 9cd978cdba0..2dcf78656c6 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m1.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m1.js @@ -1,9 +1,11 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + var m2 = require('./m2.js'); var m3 = require('./m3.js'); -exports.m2 = m2.default; -exports.m3 = m3.default; +exports.m2 = m2; +exports.m3 = m3; diff --git a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m2.js b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m2.js index 1b68fbf1694..4e7045d3fc5 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m2.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m2.js @@ -2,4 +2,4 @@ var m2 = {a:1}; -exports.default = m2; +module.exports = m2; diff --git a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m3.js b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m3.js index 8f0d9440c15..8e984623675 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m3.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_expected/cjs/m3.js @@ -2,4 +2,4 @@ var m3 = {b:2}; -exports.default = m3; +module.exports = m3; diff --git a/test/chunking-form/samples/preserve-modules-empty/_expected/amd/main.js b/test/chunking-form/samples/preserve-modules-empty/_expected/amd/main.js index d1a402c3323..6fd312fad67 100644 --- a/test/chunking-form/samples/preserve-modules-empty/_expected/amd/main.js +++ b/test/chunking-form/samples/preserve-modules-empty/_expected/amd/main.js @@ -1,5 +1,5 @@ define(['./two'], function (two) { 'use strict'; - window.APP = { a: two.default }; + window.APP = { a: two }; }); diff --git a/test/chunking-form/samples/preserve-modules-empty/_expected/amd/two.js b/test/chunking-form/samples/preserve-modules-empty/_expected/amd/two.js index 41892067ea4..68dcf822ab8 100644 --- a/test/chunking-form/samples/preserve-modules-empty/_expected/amd/two.js +++ b/test/chunking-form/samples/preserve-modules-empty/_expected/amd/two.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var a = {}; - exports.default = a; + return a; }); diff --git a/test/chunking-form/samples/preserve-modules-empty/_expected/cjs/main.js b/test/chunking-form/samples/preserve-modules-empty/_expected/cjs/main.js index 9c99002c078..b882d86f306 100644 --- a/test/chunking-form/samples/preserve-modules-empty/_expected/cjs/main.js +++ b/test/chunking-form/samples/preserve-modules-empty/_expected/cjs/main.js @@ -2,4 +2,4 @@ var two = require('./two.js'); -window.APP = { a: two.default }; +window.APP = { a: two }; diff --git a/test/chunking-form/samples/preserve-modules-empty/_expected/cjs/two.js b/test/chunking-form/samples/preserve-modules-empty/_expected/cjs/two.js index b97f60524ae..62ff33f50af 100644 --- a/test/chunking-form/samples/preserve-modules-empty/_expected/cjs/two.js +++ b/test/chunking-form/samples/preserve-modules-empty/_expected/cjs/two.js @@ -2,4 +2,4 @@ var a = {}; -exports.default = a; +module.exports = a; diff --git a/test/chunking-form/samples/preserve-modules-export-alias/_expected/amd/dep.js b/test/chunking-form/samples/preserve-modules-export-alias/_expected/amd/dep.js index 199e4e98d1b..cab959ad2ca 100644 --- a/test/chunking-form/samples/preserve-modules-export-alias/_expected/amd/dep.js +++ b/test/chunking-form/samples/preserve-modules-export-alias/_expected/amd/dep.js @@ -5,4 +5,6 @@ define(['exports'], function (exports) { 'use strict'; exports.bar = foo; exports.foo = foo; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules-export-alias/_expected/cjs/dep.js b/test/chunking-form/samples/preserve-modules-export-alias/_expected/cjs/dep.js index ce2fd9a6532..7bf4532c451 100644 --- a/test/chunking-form/samples/preserve-modules-export-alias/_expected/cjs/dep.js +++ b/test/chunking-form/samples/preserve-modules-export-alias/_expected/cjs/dep.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + const foo = 1; exports.bar = foo; diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-foo-amd-ts.ts.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-foo-amd-ts.ts.js index 47c3c10e378..2bc02b35588 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-foo-amd-ts.ts.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-foo-amd-ts.ts.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var foo = 42; - exports.default = foo; + return foo; }); diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-main-amd-ts.ts.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-main-amd-ts.ts.js index 7be64ba9a8a..1018355bd77 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-main-amd-ts.ts.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-main-amd-ts.ts.js @@ -2,10 +2,10 @@ define(['exports', './entry-foo-amd-ts.ts', './nested/entry-bar-amd-ts.ts', './n - exports.foo = foo.default; - exports.bar = bar.default; - exports.baz = baz.default; - exports.noExt = noExt.default; + exports.foo = foo; + exports.bar = bar; + exports.baz = baz; + exports.noExt = noExt; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-no-ext-amd-.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-no-ext-amd-.js index 58d21540ed7..8e2da77223e 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-no-ext-amd-.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/entry-no-ext-amd-.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var noExt = 'no-ext'; - exports.default = noExt; + return noExt; }); diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/nested/entry-bar-amd-ts.ts.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/nested/entry-bar-amd-ts.ts.js index 2325d908c80..cb3bfcd5d1d 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/nested/entry-bar-amd-ts.ts.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/nested/entry-bar-amd-ts.ts.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var bar = 'banana'; - exports.default = bar; + return bar; }); diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/nested/entry-baz-amd-ts.ts.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/nested/entry-baz-amd-ts.ts.js index e5b31b1c50c..35018f30618 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/nested/entry-baz-amd-ts.ts.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/amd/nested/entry-baz-amd-ts.ts.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var baz = 'whatever'; - exports.default = baz; + return baz; }); diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-foo-cjs-ts.ts.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-foo-cjs-ts.ts.js index 8eee837072f..476c8ac92d3 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-foo-cjs-ts.ts.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-foo-cjs-ts.ts.js @@ -2,4 +2,4 @@ var foo = 42; -exports.default = foo; +module.exports = foo; diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-main-cjs-ts.ts.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-main-cjs-ts.ts.js index 685bcb8e141..aff83e1b5d2 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-main-cjs-ts.ts.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-main-cjs-ts.ts.js @@ -9,7 +9,7 @@ var noExt = require('./entry-no-ext-cjs-.js'); -exports.foo = foo.default; -exports.bar = bar.default; -exports.baz = baz.default; -exports.noExt = noExt.default; +exports.foo = foo; +exports.bar = bar; +exports.baz = baz; +exports.noExt = noExt; diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-no-ext-cjs-.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-no-ext-cjs-.js index b976ac06443..5e9e9eb2cb5 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-no-ext-cjs-.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/entry-no-ext-cjs-.js @@ -2,4 +2,4 @@ var noExt = 'no-ext'; -exports.default = noExt; +module.exports = noExt; diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/nested/entry-bar-cjs-ts.ts.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/nested/entry-bar-cjs-ts.ts.js index 779c3ce4618..f8f56e6fc51 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/nested/entry-bar-cjs-ts.ts.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/nested/entry-bar-cjs-ts.ts.js @@ -2,4 +2,4 @@ var bar = 'banana'; -exports.default = bar; +module.exports = bar; diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/nested/entry-baz-cjs-ts.ts.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/nested/entry-baz-cjs-ts.ts.js index c6710344d5b..0ba506ad3eb 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/nested/entry-baz-cjs-ts.ts.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_expected/cjs/nested/entry-baz-cjs-ts.ts.js @@ -2,4 +2,4 @@ var baz = 'whatever'; -exports.default = baz; +module.exports = baz; diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_config.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_config.js new file mode 100644 index 00000000000..edad038168f --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'respects "named" export mode in all chunks when preserving modules', + options: { + input: 'main.js', + preserveModules: true, + output: { + exports: 'named' + } + } +}; diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/default.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/default.js new file mode 100644 index 00000000000..e8359fc2e7b --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/default.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + var foo = 'default'; + + exports.default = foo; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/main.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/main.js new file mode 100644 index 00000000000..929d5812cfc --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/main.js @@ -0,0 +1,12 @@ +define(['require', 'exports', './default', './named'], function (require, exports, _default, named) { 'use strict'; + + console.log(_default.default, named.value); + + new Promise(function (resolve, reject) { require(['./default'], resolve, reject) }).then(result => console.log(result.default)); + new Promise(function (resolve, reject) { require(['./named'], resolve, reject) }).then(result => console.log(result.value)); + + exports.default = _default.default; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/named.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/named.js new file mode 100644 index 00000000000..37e6d25bd85 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/amd/named.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const value = 'named'; + + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/default.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/default.js new file mode 100644 index 00000000000..bc9cb9bdcb9 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/default.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var foo = 'default'; + +exports.default = foo; diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/main.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/main.js new file mode 100644 index 00000000000..30d5540acc4 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/main.js @@ -0,0 +1,13 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var _default = require('./default.js'); +var named = require('./named.js'); + +console.log(_default.default, named.value); + +new Promise(function (resolve) { resolve(require('./default.js')); }).then(result => console.log(result.default)); +new Promise(function (resolve) { resolve(require('./named.js')); }).then(result => console.log(result.value)); + +exports.default = _default.default; diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/named.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/named.js new file mode 100644 index 00000000000..491f8569447 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/cjs/named.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const value = 'named'; + +exports.value = value; diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/default.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/default.js new file mode 100644 index 00000000000..97dcda8cdc9 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/default.js @@ -0,0 +1,3 @@ +var foo = 'default'; + +export default foo; diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/main.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/main.js new file mode 100644 index 00000000000..1db891a835f --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/main.js @@ -0,0 +1,8 @@ +import foo from './default.js'; +export { default } from './default.js'; +import { value } from './named.js'; + +console.log(foo, value); + +import('./default.js').then(result => console.log(result.default)); +import('./named.js').then(result => console.log(result.value)); diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/named.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/named.js new file mode 100644 index 00000000000..f632590076b --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/es/named.js @@ -0,0 +1,3 @@ +const value = 'named'; + +export { value }; diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/default.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/default.js new file mode 100644 index 00000000000..0505d3144dd --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/default.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var foo = exports('default', 'default'); + + } + }; +}); diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/main.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/main.js new file mode 100644 index 00000000000..12e707aee57 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/main.js @@ -0,0 +1,20 @@ +System.register(['./default.js', './named.js'], function (exports, module) { + 'use strict'; + var foo, value; + return { + setters: [function (module) { + foo = module.default; + exports('default', module.default); + }, function (module) { + value = module.value; + }], + execute: function () { + + console.log(foo, value); + + module.import('./default.js').then(result => console.log(result.default)); + module.import('./named.js').then(result => console.log(result.value)); + + } + }; +}); diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/named.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/named.js new file mode 100644 index 00000000000..431654fc285 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_expected/system/named.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const value = exports('value', 'named'); + + } + }; +}); diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/default.js b/test/chunking-form/samples/preserve-modules-named-export-mode/default.js new file mode 100644 index 00000000000..413f601a377 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/default.js @@ -0,0 +1 @@ +export default 'default'; diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/main.js b/test/chunking-form/samples/preserve-modules-named-export-mode/main.js new file mode 100644 index 00000000000..72dc390d821 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/main.js @@ -0,0 +1,8 @@ +import foo from './default.js'; +import { value } from './named.js'; +console.log(foo, value); + +export { default } from './default.js'; + +import('./default').then(result => console.log(result.default)); +import('./named').then(result => console.log(result.value)); diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/named.js b/test/chunking-form/samples/preserve-modules-named-export-mode/named.js new file mode 100644 index 00000000000..a5c403fef99 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/named.js @@ -0,0 +1 @@ +export const value = 'named'; diff --git a/test/chunking-form/samples/preserve-modules-nested-export/_expected/amd/inner/more_inner/something.js b/test/chunking-form/samples/preserve-modules-nested-export/_expected/amd/inner/more_inner/something.js index ab26f5b0c1b..138d9ba9e40 100644 --- a/test/chunking-form/samples/preserve-modules-nested-export/_expected/amd/inner/more_inner/something.js +++ b/test/chunking-form/samples/preserve-modules-nested-export/_expected/amd/inner/more_inner/something.js @@ -4,4 +4,6 @@ define(['exports'], function (exports) { 'use strict'; exports.Something = Something; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules-nested-export/_expected/cjs/inner/more_inner/something.js b/test/chunking-form/samples/preserve-modules-nested-export/_expected/cjs/inner/more_inner/something.js index 12aa3ba79a7..32f3040b7c0 100644 --- a/test/chunking-form/samples/preserve-modules-nested-export/_expected/cjs/inner/more_inner/something.js +++ b/test/chunking-form/samples/preserve-modules-nested-export/_expected/cjs/inner/more_inner/something.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + const Something = 'Hello World'; exports.Something = Something; diff --git a/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/amd/dep2.js b/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/amd/dep2.js index dbf74e7e1e7..16210f80f24 100644 --- a/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/amd/dep2.js +++ b/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/amd/dep2.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; function foo() {} - exports.default = foo; + return foo; }); diff --git a/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/amd/main.js b/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/amd/main.js index c07b67c3402..085588168a4 100644 --- a/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/amd/main.js +++ b/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/amd/main.js @@ -2,6 +2,6 @@ define(['./dep2'], function (dep2) { 'use strict'; - return dep2.default; + return dep2; }); diff --git a/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/cjs/dep2.js b/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/cjs/dep2.js index fe621d7e845..d356914dcc3 100644 --- a/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/cjs/dep2.js +++ b/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/cjs/dep2.js @@ -2,4 +2,4 @@ function foo() {} -exports.default = foo; +module.exports = foo; diff --git a/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/cjs/main.js b/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/cjs/main.js index 0dc5aea529f..663b040c9e7 100644 --- a/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/cjs/main.js +++ b/test/chunking-form/samples/preserve-modules-non-entry-imports/_expected/cjs/main.js @@ -4,4 +4,4 @@ var dep2 = require('./dep2.js'); -module.exports = dep2.default; +module.exports = dep2; diff --git a/test/chunking-form/samples/preserve-modules-reaching-outside/_expected/amd/dep.js b/test/chunking-form/samples/preserve-modules-reaching-outside/_expected/amd/dep.js index fbe7b670485..93365a06219 100644 --- a/test/chunking-form/samples/preserve-modules-reaching-outside/_expected/amd/dep.js +++ b/test/chunking-form/samples/preserve-modules-reaching-outside/_expected/amd/dep.js @@ -6,4 +6,6 @@ define(['exports'], function (exports) { 'use strict'; exports.fn = fn; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules-reaching-outside/_expected/cjs/dep.js b/test/chunking-form/samples/preserve-modules-reaching-outside/_expected/cjs/dep.js index 119bca3ddc7..b67a1e41d97 100644 --- a/test/chunking-form/samples/preserve-modules-reaching-outside/_expected/cjs/dep.js +++ b/test/chunking-form/samples/preserve-modules-reaching-outside/_expected/cjs/dep.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + function fn () { console.log('dep fn'); } diff --git a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/answer.num.js b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/answer.num.js index b2bc71d2598..66a5b0c010f 100644 --- a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/answer.num.js +++ b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/answer.num.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var answer = 42; - exports.default = answer; + return answer; }); diff --git a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/lorem.str.js b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/lorem.str.js index f36a199a0f6..8aeeca012a0 100644 --- a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/lorem.str.js +++ b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/lorem.str.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; - exports.default = lorem; + return lorem; }); diff --git a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/main.js b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/main.js index c52509751eb..889e72fdb24 100644 --- a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/main.js +++ b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/main.js @@ -2,9 +2,9 @@ define(['exports', './answer.num', './lorem.str', './no-ext'], function (exports - exports.answer = answer.default; - exports.lorem = lorem.default; - exports.noExt = noExt.default; + exports.answer = answer; + exports.lorem = lorem; + exports.noExt = noExt; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/no-ext.js b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/no-ext.js index c72073601dc..b60c10d9158 100644 --- a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/no-ext.js +++ b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/amd/no-ext.js @@ -1,7 +1,7 @@ -define(['exports'], function (exports) { 'use strict'; +define(function () { 'use strict'; var noExt = "COULDN'T TRANSFORM"; - exports.default = noExt; + return noExt; }); diff --git a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/answer.num.js b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/answer.num.js index 3fff8429ed9..afe78ce4015 100644 --- a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/answer.num.js +++ b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/answer.num.js @@ -2,4 +2,4 @@ var answer = 42; -exports.default = answer; +module.exports = answer; diff --git a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/lorem.str.js b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/lorem.str.js index bda392e9bd8..aa3ea036c2f 100644 --- a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/lorem.str.js +++ b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/lorem.str.js @@ -2,4 +2,4 @@ var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; -exports.default = lorem; +module.exports = lorem; diff --git a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/main.js b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/main.js index e8696da7693..0c13700934e 100644 --- a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/main.js +++ b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/main.js @@ -8,6 +8,6 @@ var noExt = require('./no-ext.js'); -exports.answer = answer.default; -exports.lorem = lorem.default; -exports.noExt = noExt.default; +exports.answer = answer; +exports.lorem = lorem; +exports.noExt = noExt; diff --git a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/no-ext.js b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/no-ext.js index 1fe6ac3c274..912e8df3bfe 100644 --- a/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/no-ext.js +++ b/test/chunking-form/samples/preserve-modules-scriptified-assets/_expected/cjs/no-ext.js @@ -2,4 +2,4 @@ var noExt = "COULDN'T TRANSFORM"; -exports.default = noExt; +module.exports = noExt; diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule index 45990e46bd4..e847f6c12b8 100644 --- a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule +++ b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule @@ -4,4 +4,6 @@ define(['exports'], function (exports) { 'use strict'; exports.virtual = virtual; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule index 266f8b02432..3b40ebf67c2 100644 --- a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule +++ b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + const virtual = "Virtual!"; exports.virtual = virtual; diff --git a/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep1.js b/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep1.js index 24346503753..eb1b2814d87 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep1.js +++ b/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep1.js @@ -6,4 +6,6 @@ define(['exports'], function (exports) { 'use strict'; exports.fn = fn; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep2.js b/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep2.js index ad678831a6e..2a152d376d9 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep2.js +++ b/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep2.js @@ -7,4 +7,6 @@ define(['exports', '../lib/lib2'], function (exports, lib2) { 'use strict'; exports.fn = fn; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep3.js b/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep3.js index 48bf30466aa..bfc8f877c33 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep3.js +++ b/test/chunking-form/samples/preserve-modules/_expected/amd/deps/dep3.js @@ -7,4 +7,6 @@ define(['exports', '../lib/lib1'], function (exports, lib1) { 'use strict'; exports.fn = fn; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules/_expected/amd/lib/lib1.js b/test/chunking-form/samples/preserve-modules/_expected/amd/lib/lib1.js index 8ee6361f5e4..93c0a3a4169 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/amd/lib/lib1.js +++ b/test/chunking-form/samples/preserve-modules/_expected/amd/lib/lib1.js @@ -6,4 +6,6 @@ define(['exports'], function (exports) { 'use strict'; exports.fn = fn; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules/_expected/amd/lib/lib2.js b/test/chunking-form/samples/preserve-modules/_expected/amd/lib/lib2.js index f514675c623..8e8e2d17cdc 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/amd/lib/lib2.js +++ b/test/chunking-form/samples/preserve-modules/_expected/amd/lib/lib2.js @@ -6,4 +6,6 @@ define(['exports'], function (exports) { 'use strict'; exports.fn = fn; + Object.defineProperty(exports, '__esModule', { value: true }); + }); diff --git a/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep1.js b/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep1.js index 5d2f022faa9..94bfa086430 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep1.js +++ b/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep1.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + function fn () { console.log('dep1 fn'); } diff --git a/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep2.js b/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep2.js index 1c35a7c280c..a9f8fb62635 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep2.js +++ b/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep2.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + var lib2 = require('../lib/lib2.js'); function fn () { diff --git a/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep3.js b/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep3.js index 9459cf55dea..eb901c61adc 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep3.js +++ b/test/chunking-form/samples/preserve-modules/_expected/cjs/deps/dep3.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + var lib1 = require('../lib/lib1.js'); function fn () { diff --git a/test/chunking-form/samples/preserve-modules/_expected/cjs/lib/lib1.js b/test/chunking-form/samples/preserve-modules/_expected/cjs/lib/lib1.js index 6a9d99129d3..135c3023fcc 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/cjs/lib/lib1.js +++ b/test/chunking-form/samples/preserve-modules/_expected/cjs/lib/lib1.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + function fn () { console.log('lib1 fn'); } diff --git a/test/chunking-form/samples/preserve-modules/_expected/cjs/lib/lib2.js b/test/chunking-form/samples/preserve-modules/_expected/cjs/lib/lib2.js index cf6e36b03dd..ee3ad249352 100644 --- a/test/chunking-form/samples/preserve-modules/_expected/cjs/lib/lib2.js +++ b/test/chunking-form/samples/preserve-modules/_expected/cjs/lib/lib2.js @@ -1,5 +1,7 @@ 'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); + function fn () { console.log('lib2 fn'); } diff --git a/test/cli/samples/warn-broken-sourcemap/_config.js b/test/cli/samples/warn-broken-sourcemap/_config.js index 596a4d33ae5..160b7876918 100644 --- a/test/cli/samples/warn-broken-sourcemap/_config.js +++ b/test/cli/samples/warn-broken-sourcemap/_config.js @@ -12,7 +12,7 @@ module.exports = { stderr, '(!) Broken sourcemap\n' + 'https://rollupjs.org/guide/en/#warning-sourcemap-is-likely-to-be-incorrect\n' + - "Plugins that transform code (such as 'test-plugin1', 'test-plugin2' and 'test-plugin3') should generate accompanying sourcemaps" + "Plugins that transform code (such as 'test-plugin1') should generate accompanying sourcemaps\n" ); } }; diff --git a/test/cli/samples/warn-broken-sourcemap/rollup.config.js b/test/cli/samples/warn-broken-sourcemap/rollup.config.js index c490546377b..d29788efcb6 100644 --- a/test/cli/samples/warn-broken-sourcemap/rollup.config.js +++ b/test/cli/samples/warn-broken-sourcemap/rollup.config.js @@ -6,18 +6,6 @@ module.exports = { transform(code) { return code + '/*1*/'; } - }, - { - name: 'test-plugin2', - transform(code) { - return code + '/*2*/'; - } - }, - { - name: 'test-plugin3', - transform(code) { - return code + '/*3*/'; - } } ], output: { diff --git a/test/cli/samples/warn-broken-sourcemaps/_config.js b/test/cli/samples/warn-broken-sourcemaps/_config.js new file mode 100644 index 00000000000..596a4d33ae5 --- /dev/null +++ b/test/cli/samples/warn-broken-sourcemaps/_config.js @@ -0,0 +1,18 @@ +const fs = require('fs'); +const path = require('path'); +const { assertStderrIncludes } = require('../../../utils.js'); + +module.exports = { + description: 'displays warnings for broken sourcemaps', + command: 'rollup -c', + stderr: stderr => { + fs.unlinkSync(path.resolve(__dirname, 'bundle')); + fs.unlinkSync(path.resolve(__dirname, 'bundle.map')); + assertStderrIncludes( + stderr, + '(!) Broken sourcemap\n' + + 'https://rollupjs.org/guide/en/#warning-sourcemap-is-likely-to-be-incorrect\n' + + "Plugins that transform code (such as 'test-plugin1', 'test-plugin2' and 'test-plugin3') should generate accompanying sourcemaps" + ); + } +}; diff --git a/test/cli/samples/warn-broken-sourcemaps/main.js b/test/cli/samples/warn-broken-sourcemaps/main.js new file mode 100644 index 00000000000..c0b933d7b56 --- /dev/null +++ b/test/cli/samples/warn-broken-sourcemaps/main.js @@ -0,0 +1 @@ +console.log('main'); diff --git a/test/cli/samples/warn-broken-sourcemaps/rollup.config.js b/test/cli/samples/warn-broken-sourcemaps/rollup.config.js new file mode 100644 index 00000000000..c490546377b --- /dev/null +++ b/test/cli/samples/warn-broken-sourcemaps/rollup.config.js @@ -0,0 +1,28 @@ +module.exports = { + input: 'main.js', + plugins: [ + { + name: 'test-plugin1', + transform(code) { + return code + '/*1*/'; + } + }, + { + name: 'test-plugin2', + transform(code) { + return code + '/*2*/'; + } + }, + { + name: 'test-plugin3', + transform(code) { + return code + '/*3*/'; + } + } + ], + output: { + format: 'esm', + file: 'bundle', + sourcemap: true + } +}; diff --git a/test/cli/samples/warn-import-export/_config.js b/test/cli/samples/warn-import-export/_config.js index ac65d03491f..da2e17783d9 100644 --- a/test/cli/samples/warn-import-export/_config.js +++ b/test/cli/samples/warn-import-export/_config.js @@ -7,7 +7,11 @@ module.exports = { assertStderrIncludes( stderr, '(!) Mixing named and default exports\n' + - "Consumers of your bundle will have to use bundle['default'] to access the default export, which may not be what you want. Use `output.exports: 'named'` to disable this warning\n" + 'https://rollupjs.org/guide/en/#output-exports\n' + + 'The following entry modules are using named and default exports together:\n' + + 'main.js\n' + + '\n' + + "Consumers of your bundle will have to use chunk['default'] to access their default export, which may not be what you want. Use `output.exports: 'named'` to disable this warning\n" ); assertStderrIncludes( stderr, diff --git a/test/cli/samples/warn-mixed-exports-multiple/_config.js b/test/cli/samples/warn-mixed-exports-multiple/_config.js new file mode 100644 index 00000000000..263aaf63a06 --- /dev/null +++ b/test/cli/samples/warn-mixed-exports-multiple/_config.js @@ -0,0 +1,20 @@ +const { assertStderrIncludes } = require('../../../utils.js'); + +module.exports = { + description: 'warns when mixed exports are used', + command: 'rollup -c', + stderr: stderr => { + assertStderrIncludes( + stderr, + '(!) Mixing named and default exports\n' + + 'https://rollupjs.org/guide/en/#output-exports\n' + + 'The following entry modules are using named and default exports together:\n' + + 'lib1.js\n' + + 'lib2.js\n' + + 'lib3.js\n' + + '...and 3 other entry modules\n' + + '\n' + + "Consumers of your bundle will have to use chunk['default'] to access their default export, which may not be what you want. Use `output.exports: 'named'` to disable this warning\n" + ); + } +}; diff --git a/test/cli/samples/warn-mixed-exports-multiple/lib1.js b/test/cli/samples/warn-mixed-exports-multiple/lib1.js new file mode 100644 index 00000000000..fea73e2bf15 --- /dev/null +++ b/test/cli/samples/warn-mixed-exports-multiple/lib1.js @@ -0,0 +1,2 @@ +export const value1 = 42; +export default 42; diff --git a/test/cli/samples/warn-mixed-exports-multiple/lib2.js b/test/cli/samples/warn-mixed-exports-multiple/lib2.js new file mode 100644 index 00000000000..61e9111a9d5 --- /dev/null +++ b/test/cli/samples/warn-mixed-exports-multiple/lib2.js @@ -0,0 +1,2 @@ +export const value2 = 42; +export default 42; diff --git a/test/cli/samples/warn-mixed-exports-multiple/lib3.js b/test/cli/samples/warn-mixed-exports-multiple/lib3.js new file mode 100644 index 00000000000..5736037edc6 --- /dev/null +++ b/test/cli/samples/warn-mixed-exports-multiple/lib3.js @@ -0,0 +1,2 @@ +export const value3 = 42; +export default 42; diff --git a/test/cli/samples/warn-mixed-exports-multiple/lib4.js b/test/cli/samples/warn-mixed-exports-multiple/lib4.js new file mode 100644 index 00000000000..0cd886d4832 --- /dev/null +++ b/test/cli/samples/warn-mixed-exports-multiple/lib4.js @@ -0,0 +1,2 @@ +export const value4 = 42; +export default 42; diff --git a/test/cli/samples/warn-mixed-exports-multiple/lib5.js b/test/cli/samples/warn-mixed-exports-multiple/lib5.js new file mode 100644 index 00000000000..f2c444ccf3a --- /dev/null +++ b/test/cli/samples/warn-mixed-exports-multiple/lib5.js @@ -0,0 +1,2 @@ +export const value5 = 42; +export default 42; diff --git a/test/cli/samples/warn-mixed-exports-multiple/main.js b/test/cli/samples/warn-mixed-exports-multiple/main.js new file mode 100644 index 00000000000..077055a5297 --- /dev/null +++ b/test/cli/samples/warn-mixed-exports-multiple/main.js @@ -0,0 +1,17 @@ +import lib1, {value1} from './lib1.js'; +console.log(lib1, value1); + +import lib2, {value2} from './lib2.js'; +console.log(lib2, value2); + +import lib3, {value3} from './lib3.js'; +console.log(lib3, value3); + +import lib4, {value4} from './lib4.js'; +console.log(lib4, value4); + +import lib5, {value5} from './lib5.js'; +console.log(lib5, value5); + +export const value = 42; +export default 42; diff --git a/test/cli/samples/warn-mixed-exports-multiple/rollup.config.js b/test/cli/samples/warn-mixed-exports-multiple/rollup.config.js new file mode 100644 index 00000000000..2ee4513c4c5 --- /dev/null +++ b/test/cli/samples/warn-mixed-exports-multiple/rollup.config.js @@ -0,0 +1,7 @@ +module.exports = { + input: 'main.js', + preserveModules: true, + output: { + format: 'amd' + } +}; diff --git a/test/form/samples/default-export-mode/_config.js b/test/form/samples/default-export-mode/_config.js new file mode 100644 index 00000000000..bc4638b956c --- /dev/null +++ b/test/form/samples/default-export-mode/_config.js @@ -0,0 +1,9 @@ +module.exports = { + description: 'allows specifying the export mode to be "default"', + options: { + output: { + exports: 'default', + name: 'bundle' + } + } +}; diff --git a/test/form/samples/default-export-mode/_expected/amd.js b/test/form/samples/default-export-mode/_expected/amd.js new file mode 100644 index 00000000000..37d25711e09 --- /dev/null +++ b/test/form/samples/default-export-mode/_expected/amd.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var main = 42; + + return main; + +}); diff --git a/test/form/samples/default-export-mode/_expected/cjs.js b/test/form/samples/default-export-mode/_expected/cjs.js new file mode 100644 index 00000000000..5a370cdb174 --- /dev/null +++ b/test/form/samples/default-export-mode/_expected/cjs.js @@ -0,0 +1,5 @@ +'use strict'; + +var main = 42; + +module.exports = main; diff --git a/test/form/samples/default-export-mode/_expected/es.js b/test/form/samples/default-export-mode/_expected/es.js new file mode 100644 index 00000000000..d862de816a3 --- /dev/null +++ b/test/form/samples/default-export-mode/_expected/es.js @@ -0,0 +1,3 @@ +var main = 42; + +export default main; diff --git a/test/form/samples/default-export-mode/_expected/iife.js b/test/form/samples/default-export-mode/_expected/iife.js new file mode 100644 index 00000000000..3578ebdc148 --- /dev/null +++ b/test/form/samples/default-export-mode/_expected/iife.js @@ -0,0 +1,8 @@ +var bundle = (function () { + 'use strict'; + + var main = 42; + + return main; + +}()); diff --git a/test/form/samples/default-export-mode/_expected/system.js b/test/form/samples/default-export-mode/_expected/system.js new file mode 100644 index 00000000000..6d902c53457 --- /dev/null +++ b/test/form/samples/default-export-mode/_expected/system.js @@ -0,0 +1,10 @@ +System.register('bundle', [], function (exports) { + 'use strict'; + return { + execute: function () { + + var main = exports('default', 42); + + } + }; +}); diff --git a/test/form/samples/default-export-mode/_expected/umd.js b/test/form/samples/default-export-mode/_expected/umd.js new file mode 100644 index 00000000000..5e071cb1060 --- /dev/null +++ b/test/form/samples/default-export-mode/_expected/umd.js @@ -0,0 +1,11 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.bundle = factory()); +}(this, (function () { 'use strict'; + + var main = 42; + + return main; + +}))); diff --git a/test/form/samples/default-export-mode/main.js b/test/form/samples/default-export-mode/main.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/form/samples/default-export-mode/main.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/function/samples/export-type-mismatch-b/_config.js b/test/function/samples/export-type-mismatch-b/_config.js index 0dabc70cc86..553ae098c48 100644 --- a/test/function/samples/export-type-mismatch-b/_config.js +++ b/test/function/samples/export-type-mismatch-b/_config.js @@ -3,7 +3,8 @@ module.exports = { options: { output: { exports: 'blah' } }, generateError: { code: 'INVALID_EXPORT_OPTION', - message: `output.exports must be 'default', 'named', 'none', 'auto', or left unspecified (defaults to 'auto')`, + message: + '"output.exports" must be "default", "named", "none", "auto", or left unspecified (defaults to "auto"), received "blah"', url: 'https://rollupjs.org/guide/en/#output-exports' } }; diff --git a/test/function/samples/export-type-mismatch-c/_config.js b/test/function/samples/export-type-mismatch-c/_config.js index 7821a78dc0a..4c19ef8fc39 100644 --- a/test/function/samples/export-type-mismatch-c/_config.js +++ b/test/function/samples/export-type-mismatch-c/_config.js @@ -3,6 +3,7 @@ module.exports = { options: { output: { exports: 'none' } }, generateError: { code: 'INVALID_EXPORT_OPTION', - message: `'none' was specified for output.exports, but entry module has following exports: default` + message: + '"none" was specified for "output.exports", but entry module "main.js" has the following exports: default' } }; diff --git a/test/function/samples/export-type-mismatch/_config.js b/test/function/samples/export-type-mismatch/_config.js index 254a6186f67..1020793bb76 100644 --- a/test/function/samples/export-type-mismatch/_config.js +++ b/test/function/samples/export-type-mismatch/_config.js @@ -3,6 +3,7 @@ module.exports = { options: { output: { exports: 'default' } }, generateError: { code: 'INVALID_EXPORT_OPTION', - message: `'default' was specified for output.exports, but entry module has following exports: foo` + message: + '"default" was specified for "output.exports", but entry module "main.js" has the following exports: foo' } }; diff --git a/test/function/samples/invalid-default-export-mode/_config.js b/test/function/samples/invalid-default-export-mode/_config.js new file mode 100644 index 00000000000..84f919bc080 --- /dev/null +++ b/test/function/samples/invalid-default-export-mode/_config.js @@ -0,0 +1,13 @@ +module.exports = { + description: 'throw for invalid default export mode', + options: { + output: { + exports: 'default' + } + }, + generateError: { + code: 'INVALID_EXPORT_OPTION', + message: + '"default" was specified for "output.exports", but entry module "main.js" has the following exports: default, foo' + } +}; diff --git a/test/function/samples/invalid-default-export-mode/main.js b/test/function/samples/invalid-default-export-mode/main.js new file mode 100644 index 00000000000..8981df90477 --- /dev/null +++ b/test/function/samples/invalid-default-export-mode/main.js @@ -0,0 +1,2 @@ +export default 42; +export const foo = 43; diff --git a/test/function/samples/preserve-modules-with-inline/_config.js b/test/function/samples/preserve-modules/inline-dynamic-imports/_config.js similarity index 100% rename from test/function/samples/preserve-modules-with-inline/_config.js rename to test/function/samples/preserve-modules/inline-dynamic-imports/_config.js diff --git a/test/function/samples/preserve-modules-with-inline/lib.js b/test/function/samples/preserve-modules/inline-dynamic-imports/lib.js similarity index 100% rename from test/function/samples/preserve-modules-with-inline/lib.js rename to test/function/samples/preserve-modules/inline-dynamic-imports/lib.js diff --git a/test/function/samples/preserve-modules-with-inline/main.js b/test/function/samples/preserve-modules/inline-dynamic-imports/main.js similarity index 100% rename from test/function/samples/preserve-modules-with-inline/main.js rename to test/function/samples/preserve-modules/inline-dynamic-imports/main.js diff --git a/test/function/samples/preserve-modules/invalid-default-export-mode/_config.js b/test/function/samples/preserve-modules/invalid-default-export-mode/_config.js new file mode 100644 index 00000000000..e66d62ecc36 --- /dev/null +++ b/test/function/samples/preserve-modules/invalid-default-export-mode/_config.js @@ -0,0 +1,15 @@ +module.exports = { + description: 'throws when using default export mode with named exports', + options: { + input: ['main.js'], + preserveModules: true, + output: { + exports: 'default' + } + }, + generateError: { + code: 'INVALID_EXPORT_OPTION', + message: + '"default" was specified for "output.exports", but entry module "lib.js" has the following exports: value' + } +}; diff --git a/test/function/samples/preserve-modules-with-manual/lib.js b/test/function/samples/preserve-modules/invalid-default-export-mode/lib.js similarity index 100% rename from test/function/samples/preserve-modules-with-manual/lib.js rename to test/function/samples/preserve-modules/invalid-default-export-mode/lib.js diff --git a/test/function/samples/preserve-modules/invalid-default-export-mode/main.js b/test/function/samples/preserve-modules/invalid-default-export-mode/main.js new file mode 100644 index 00000000000..f26e8d860a6 --- /dev/null +++ b/test/function/samples/preserve-modules/invalid-default-export-mode/main.js @@ -0,0 +1,3 @@ +import { value } from './lib.js'; + +assert.equal(value, 42); diff --git a/test/function/samples/preserve-modules/invalid-none-export-mode/_config.js b/test/function/samples/preserve-modules/invalid-none-export-mode/_config.js new file mode 100644 index 00000000000..d8f3412169e --- /dev/null +++ b/test/function/samples/preserve-modules/invalid-none-export-mode/_config.js @@ -0,0 +1,15 @@ +module.exports = { + description: 'throws when using none export mode with named exports', + options: { + input: ['main.js'], + preserveModules: true, + output: { + exports: 'none' + } + }, + generateError: { + code: 'INVALID_EXPORT_OPTION', + message: + '"none" was specified for "output.exports", but entry module "lib.js" has the following exports: value' + } +}; diff --git a/test/function/samples/preserve-modules-with-optimize/lib.js b/test/function/samples/preserve-modules/invalid-none-export-mode/lib.js similarity index 100% rename from test/function/samples/preserve-modules-with-optimize/lib.js rename to test/function/samples/preserve-modules/invalid-none-export-mode/lib.js diff --git a/test/function/samples/preserve-modules/invalid-none-export-mode/main.js b/test/function/samples/preserve-modules/invalid-none-export-mode/main.js new file mode 100644 index 00000000000..f26e8d860a6 --- /dev/null +++ b/test/function/samples/preserve-modules/invalid-none-export-mode/main.js @@ -0,0 +1,3 @@ +import { value } from './lib.js'; + +assert.equal(value, 42); diff --git a/test/function/samples/preserve-modules-with-manual/_config.js b/test/function/samples/preserve-modules/manual-chunks/_config.js similarity index 100% rename from test/function/samples/preserve-modules-with-manual/_config.js rename to test/function/samples/preserve-modules/manual-chunks/_config.js diff --git a/test/function/samples/preserve-modules/manual-chunks/lib.js b/test/function/samples/preserve-modules/manual-chunks/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/preserve-modules/manual-chunks/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/preserve-modules-with-manual/main.js b/test/function/samples/preserve-modules/manual-chunks/main.js similarity index 100% rename from test/function/samples/preserve-modules-with-manual/main.js rename to test/function/samples/preserve-modules/manual-chunks/main.js diff --git a/test/function/samples/preserve-modules/mixed-exports/_config.js b/test/function/samples/preserve-modules/mixed-exports/_config.js new file mode 100644 index 00000000000..d6b878a4ba9 --- /dev/null +++ b/test/function/samples/preserve-modules/mixed-exports/_config.js @@ -0,0 +1,25 @@ +const path = require('path'); + +module.exports = { + description: 'warns for mixed exports in all chunks when preserving modules', + options: { + input: ['main.js'], + preserveModules: true + }, + warnings: [ + { + code: 'MIXED_EXPORTS', + id: path.resolve(__dirname, 'lib1.js'), + message: + 'Entry module "lib1.js" is using named and default exports together. Consumers of your bundle will have to use `chunk["default"]` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning', + url: 'https://rollupjs.org/guide/en/#output-exports' + }, + { + code: 'MIXED_EXPORTS', + id: path.resolve(__dirname, 'main.js'), + message: + 'Entry module "main.js" is using named and default exports together. Consumers of your bundle will have to use `chunk["default"]` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning', + url: 'https://rollupjs.org/guide/en/#output-exports' + } + ] +}; diff --git a/test/function/samples/preserve-modules/mixed-exports/lib1.js b/test/function/samples/preserve-modules/mixed-exports/lib1.js new file mode 100644 index 00000000000..fea73e2bf15 --- /dev/null +++ b/test/function/samples/preserve-modules/mixed-exports/lib1.js @@ -0,0 +1,2 @@ +export const value1 = 42; +export default 42; diff --git a/test/function/samples/preserve-modules/mixed-exports/lib2.js b/test/function/samples/preserve-modules/mixed-exports/lib2.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/function/samples/preserve-modules/mixed-exports/lib2.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/function/samples/preserve-modules/mixed-exports/lib3.js b/test/function/samples/preserve-modules/mixed-exports/lib3.js new file mode 100644 index 00000000000..baeef4a82d8 --- /dev/null +++ b/test/function/samples/preserve-modules/mixed-exports/lib3.js @@ -0,0 +1 @@ +export const value3 = 42; diff --git a/test/function/samples/preserve-modules/mixed-exports/main.js b/test/function/samples/preserve-modules/mixed-exports/main.js new file mode 100644 index 00000000000..0bd8737542e --- /dev/null +++ b/test/function/samples/preserve-modules/mixed-exports/main.js @@ -0,0 +1,11 @@ +import lib1, { value1 } from './lib1'; +import lib2 from './lib2'; +import { value3 } from './lib3'; + +assert.equal(lib1, 42); +assert.equal(value1, 42); +assert.equal(lib2, 42); +assert.equal(value3, 42); + +export const value = 42; +export default 42; diff --git a/test/function/samples/preserve-modules-with-optimize/_config.js b/test/function/samples/preserve-modules/optimize-chunks/_config.js similarity index 100% rename from test/function/samples/preserve-modules-with-optimize/_config.js rename to test/function/samples/preserve-modules/optimize-chunks/_config.js diff --git a/test/function/samples/preserve-modules/optimize-chunks/lib.js b/test/function/samples/preserve-modules/optimize-chunks/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/preserve-modules/optimize-chunks/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/preserve-modules-with-optimize/main.js b/test/function/samples/preserve-modules/optimize-chunks/main.js similarity index 100% rename from test/function/samples/preserve-modules-with-optimize/main.js rename to test/function/samples/preserve-modules/optimize-chunks/main.js diff --git a/test/function/samples/preserve-modules-virtual-modules-conflict/_config.js b/test/function/samples/preserve-modules/virtual-modules-conflict/_config.js similarity index 71% rename from test/function/samples/preserve-modules-virtual-modules-conflict/_config.js rename to test/function/samples/preserve-modules/virtual-modules-conflict/_config.js index dbd42c766d4..de79ef35377 100644 --- a/test/function/samples/preserve-modules-virtual-modules-conflict/_config.js +++ b/test/function/samples/preserve-modules/virtual-modules-conflict/_config.js @@ -22,14 +22,11 @@ module.exports = { ] }, bundle(bundle) { - return bundle - .generate({ format: 'esm' }) - .then(generated => - assert.deepEqual(generated.output.map(chunk => chunk.fileName), [ - 'main.js', - '_virtual/_virtualModule.js', - '_virtual/_virtualModule2.js' - ]) - ); + return bundle.generate({ format: 'esm' }).then(generated => + assert.deepEqual( + generated.output.map(chunk => chunk.fileName), + ['main.js', '_virtual/_virtualModule.js', '_virtual/_virtualModule2.js'] + ) + ); } }; diff --git a/test/function/samples/preserve-modules-virtual-modules-conflict/_virtual/_virtualModule.js b/test/function/samples/preserve-modules/virtual-modules-conflict/_virtual/_virtualModule.js similarity index 100% rename from test/function/samples/preserve-modules-virtual-modules-conflict/_virtual/_virtualModule.js rename to test/function/samples/preserve-modules/virtual-modules-conflict/_virtual/_virtualModule.js diff --git a/test/function/samples/preserve-modules-virtual-modules-conflict/main.js b/test/function/samples/preserve-modules/virtual-modules-conflict/main.js similarity index 100% rename from test/function/samples/preserve-modules-virtual-modules-conflict/main.js rename to test/function/samples/preserve-modules/virtual-modules-conflict/main.js diff --git a/test/function/samples/preserve-modules-virtual-modules/_config.js b/test/function/samples/preserve-modules/virtual-modules/_config.js similarity index 72% rename from test/function/samples/preserve-modules-virtual-modules/_config.js rename to test/function/samples/preserve-modules/virtual-modules/_config.js index 591d4d4b317..c33e1a4c7cc 100644 --- a/test/function/samples/preserve-modules-virtual-modules/_config.js +++ b/test/function/samples/preserve-modules/virtual-modules/_config.js @@ -22,14 +22,11 @@ module.exports = { ] }, bundle(bundle) { - return bundle - .generate({ format: 'esm' }) - .then(generated => - assert.deepEqual(generated.output.map(chunk => chunk.fileName), [ - 'main.js', - '_virtual/_virtualModule', - 'lib/lib.js' - ]) - ); + return bundle.generate({ format: 'esm' }).then(generated => + assert.deepEqual( + generated.output.map(chunk => chunk.fileName), + ['main.js', '_virtual/_virtualModule', 'lib/lib.js'] + ) + ); } }; diff --git a/test/function/samples/preserve-modules-virtual-modules/lib/lib.js b/test/function/samples/preserve-modules/virtual-modules/lib/lib.js similarity index 100% rename from test/function/samples/preserve-modules-virtual-modules/lib/lib.js rename to test/function/samples/preserve-modules/virtual-modules/lib/lib.js diff --git a/test/function/samples/preserve-modules-virtual-modules/main.js b/test/function/samples/preserve-modules/virtual-modules/main.js similarity index 100% rename from test/function/samples/preserve-modules-virtual-modules/main.js rename to test/function/samples/preserve-modules/virtual-modules/main.js diff --git a/test/function/samples/warn-on-auto-named-default-exports/_config.js b/test/function/samples/warn-on-auto-named-default-exports/_config.js index 87870d3d234..4005a272d0f 100644 --- a/test/function/samples/warn-on-auto-named-default-exports/_config.js +++ b/test/function/samples/warn-on-auto-named-default-exports/_config.js @@ -1,10 +1,14 @@ +const path = require('path'); + module.exports = { description: 'warns if default and named exports are used in auto mode', warnings: [ { code: 'MIXED_EXPORTS', - message: `Using named and default exports together. Consumers of your bundle will have to use bundle['default'] to access the default export, which may not be what you want. Use \`output.exports: 'named'\` to disable this warning`, - url: `https://rollupjs.org/guide/en/#output-exports` + id: path.resolve(__dirname, 'main.js'), + message: + 'Entry module "main.js" is using named and default exports together. Consumers of your bundle will have to use `chunk["default"]` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning', + url: 'https://rollupjs.org/guide/en/#output-exports' } ] };