diff --git a/packages/babel-preset-env/src/index.js b/packages/babel-preset-env/src/index.js index 85a784476b83..76f11ebcb934 100644 --- a/packages/babel-preset-env/src/index.js +++ b/packages/babel-preset-env/src/index.js @@ -1,5 +1,6 @@ //@flow +import { SemVer } from "semver"; import { logPluginOrPolyfill } from "./debug"; import getOptionSpecificExcludesFor from "./get-option-specific-excludes"; import filterItems from "./filter-items"; @@ -20,6 +21,9 @@ import availablePlugins from "./available-plugins"; import { filterStageFromList, prettifyTargets } from "./utils"; import { declare } from "@babel/helper-plugin-utils"; +import typeof ModuleTransformationsType from "./module-transformations"; +import type { BuiltInsOption, Targets, ModuleOption } from "./types"; + export { isPluginRequired } from "./filter-items"; const pluginListWithoutProposals = filterStageFromList( @@ -56,6 +60,103 @@ export const transformIncludesAndExcludes = (opts: Array): Object => { ); }; +export const getModulesPluginNames = ({ + modules, + transformations, + shouldTransformESM, + shouldTransformDynamicImport, +}: { + modules: ModuleOption, + transformations: ModuleTransformationsType, + shouldTransformESM: boolean, + shouldTransformDynamicImport: boolean, +}) => { + const modulesPluginNames = []; + if (modules !== false && transformations[modules]) { + if (shouldTransformESM) { + modulesPluginNames.push(transformations[modules]); + } + + if ( + shouldTransformDynamicImport && + shouldTransformESM && + modules !== "umd" + ) { + modulesPluginNames.push("proposal-dynamic-import"); + } else { + if (shouldTransformDynamicImport) { + console.warn( + "Dynamic import can only be supported when transforming ES modules" + + " to AMD, CommonJS or SystemJS. Only the parser plugin will be enabled.", + ); + } + modulesPluginNames.push("syntax-dynamic-import"); + } + } else { + modulesPluginNames.push("syntax-dynamic-import"); + } + return modulesPluginNames; +}; + +export const getPolyfillPlugins = ({ + useBuiltIns, + corejs, + polyfillTargets, + include, + exclude, + proposals, + shippedProposals, + regenerator, + debug, +}: { + useBuiltIns: BuiltInsOption, + corejs: typeof SemVer | null | false, + polyfillTargets: Targets, + include: Set, + exclude: Set, + proposals: boolean, + shippedProposals: boolean, + regenerator: boolean, + debug: boolean, +}) => { + const polyfillPlugins = []; + if (useBuiltIns === "usage" || useBuiltIns === "entry") { + const pluginOptions = { + corejs, + polyfillTargets, + include, + exclude, + proposals, + shippedProposals, + regenerator, + debug, + }; + + if (corejs) { + if (useBuiltIns === "usage") { + if (corejs.major === 2) { + polyfillPlugins.push([addCoreJS2UsagePlugin, pluginOptions]); + } else { + polyfillPlugins.push([addCoreJS3UsagePlugin, pluginOptions]); + } + if (regenerator) { + polyfillPlugins.push([addRegeneratorUsagePlugin, pluginOptions]); + } + } else { + if (corejs.major === 2) { + polyfillPlugins.push([replaceCoreJS2EntryPlugin, pluginOptions]); + } else { + polyfillPlugins.push([replaceCoreJS3EntryPlugin, pluginOptions]); + if (!regenerator) { + polyfillPlugins.push([removeRegeneratorEntryPlugin, pluginOptions]); + } + } + } + } + } + return polyfillPlugins; +}; + function supportsStaticESM(caller) { return !!(caller && caller.supportsStaticESM); } @@ -115,58 +216,46 @@ export default declare((api, opts) => { const transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets; - const transformations = filterItems( + const modulesPluginNames = getModulesPluginNames({ + modules, + transformations: moduleTransformations, + // TODO: Remove the 'api.caller' check eventually. Just here to prevent + // unnecessary breakage in the short term for users on older betas/RCs. + shouldTransformESM: + modules !== "auto" || !api.caller || !api.caller(supportsStaticESM), + shouldTransformDynamicImport: + modules !== "auto" || !api.caller || !api.caller(supportsDynamicImport), + }); + + const pluginNames = filterItems( shippedProposals ? pluginList : pluginListWithoutProposals, include.plugins, exclude.plugins, transformTargets, - null, + modulesPluginNames, getOptionSpecificExcludesFor({ loose }), pluginSyntaxMap, ); - const plugins = []; - const pluginUseBuiltIns = useBuiltIns !== false; - - if (modules !== false && moduleTransformations[modules]) { - // TODO: Remove the 'api.caller' check eventually. Just here to prevent - // unnecessary breakage in the short term for users on older betas/RCs. - const shouldTransformESM = - modules !== "auto" || !api.caller || !api.caller(supportsStaticESM); - const shouldTransformDynamicImport = - modules !== "auto" || !api.caller || !api.caller(supportsDynamicImport); - - if (shouldTransformESM) { - // NOTE: not giving spec here yet to avoid compatibility issues when - // transform-modules-commonjs gets its spec mode - plugins.push([getPlugin(moduleTransformations[modules]), { loose }]); - } - - if ( - shouldTransformDynamicImport && - shouldTransformESM && - modules !== "umd" - ) { - plugins.push([getPlugin("proposal-dynamic-import"), { loose }]); - } else { - if (shouldTransformDynamicImport) { - console.warn( - "Dynamic import can only be supported when transforming ES modules" + - " to AMD, CommonJS or SystemJS. Only the parser plugin will be enabled.", - ); - } - plugins.push(getPlugin("syntax-dynamic-import")); - } - } else { - plugins.push(getPlugin("syntax-dynamic-import")); - } + const polyfillPlugins = getPolyfillPlugins({ + useBuiltIns, + corejs, + polyfillTargets: targets, + include: include.builtIns, + exclude: exclude.builtIns, + proposals, + shippedProposals, + regenerator: pluginNames.has("transform-regenerator"), + debug, + }); - transformations.forEach(pluginName => - plugins.push([ + const pluginUseBuiltIns = useBuiltIns !== false; + const plugins = Array.from(pluginNames) + .map(pluginName => [ getPlugin(pluginName), { spec, loose, useBuiltIns: pluginUseBuiltIns }, - ]), - ); + ]) + .concat(polyfillPlugins); if (debug) { console.log("@babel/preset-env: `DEBUG` option"); @@ -174,8 +263,8 @@ export default declare((api, opts) => { console.log(JSON.stringify(prettifyTargets(targets), null, 2)); console.log(`\nUsing modules transform: ${modules.toString()}`); console.log("\nUsing plugins:"); - transformations.forEach(transform => { - logPluginOrPolyfill(transform, targets, pluginList); + pluginNames.forEach(pluginName => { + logPluginOrPolyfill(pluginName, targets, pluginList); }); if (!useBuiltIns) { @@ -183,46 +272,10 @@ export default declare((api, opts) => { "\nUsing polyfills: No polyfills were added, since the `useBuiltIns` option was not set.", ); } else { + // NOTE: Polyfill plugins are outputting debug info internally console.log(`\nUsing polyfills with \`${useBuiltIns}\` option:`); } } - if (useBuiltIns === "usage" || useBuiltIns === "entry") { - const regenerator = transformations.has("transform-regenerator"); - - const pluginOptions = { - corejs, - polyfillTargets: targets, - include: include.builtIns, - exclude: exclude.builtIns, - proposals, - shippedProposals, - regenerator, - debug, - }; - - if (corejs) { - if (useBuiltIns === "usage") { - if (corejs.major === 2) { - plugins.push([addCoreJS2UsagePlugin, pluginOptions]); - } else { - plugins.push([addCoreJS3UsagePlugin, pluginOptions]); - } - if (regenerator) { - plugins.push([addRegeneratorUsagePlugin, pluginOptions]); - } - } else { - if (corejs.major === 2) { - plugins.push([replaceCoreJS2EntryPlugin, pluginOptions]); - } else { - plugins.push([replaceCoreJS3EntryPlugin, pluginOptions]); - if (!regenerator) { - plugins.push([removeRegeneratorEntryPlugin, pluginOptions]); - } - } - } - } - } - return { plugins }; }); diff --git a/packages/babel-preset-env/src/normalize-options.js b/packages/babel-preset-env/src/normalize-options.js index 76b13f5a7e39..523857ea5832 100644 --- a/packages/babel-preset-env/src/normalize-options.js +++ b/packages/babel-preset-env/src/normalize-options.js @@ -32,23 +32,29 @@ const validateTopLevelOptions = (options: Options) => { } }; -const allPluginsList = [ - ...Object.keys(pluginsList), +const allPluginsList = Object.keys(pluginsList); + +// NOTE: Since module plugins are handled seperatly compared to other plugins (via the "modules" option) it +// should only be possible to exclude and not include module plugins, otherwise it's possible that preset-env +// will add a module plugin twice. +const modulePlugins = [ + "proposal-dynamic-import", ...Object.keys(moduleTransformations).map(m => moduleTransformations[m]), ]; -const validIncludesAndExcludesWithoutCoreJS = new Set(allPluginsList); - -const validIncludesAndExcludesWithCoreJS2 = new Set([ - ...allPluginsList, - ...Object.keys(corejs2Polyfills), - ...defaultWebIncludes, -]); - -const validIncludesAndExcludesWithCoreJS3 = new Set([ - ...allPluginsList, - ...Object.keys(corejs3Polyfills), -]); +const getValidIncludesAndExcludes = ( + type: "include" | "exclude", + corejs: number | false, +) => + new Set([ + ...allPluginsList, + ...(type === "exclude" ? modulePlugins : []), + ...(corejs + ? corejs == 2 + ? [...Object.keys(corejs2Polyfills), ...defaultWebIncludes] + : Object.keys(corejs3Polyfills) + : []), + ]); const pluginToRegExp = (plugin: PluginListItem) => { if (plugin instanceof RegExp) return plugin; @@ -59,14 +65,14 @@ const pluginToRegExp = (plugin: PluginListItem) => { } }; -const selectPlugins = (regexp: RegExp | null, corejs: number | false) => - Array.from( - corejs - ? corejs == 2 - ? validIncludesAndExcludesWithCoreJS2 - : validIncludesAndExcludesWithCoreJS3 - : validIncludesAndExcludesWithoutCoreJS, - ).filter(item => regexp instanceof RegExp && regexp.test(item)); +const selectPlugins = ( + regexp: RegExp | null, + type: "include" | "exclude", + corejs: number | false, +) => + Array.from(getValidIncludesAndExcludes(type, corejs)).filter( + item => regexp instanceof RegExp && regexp.test(item), + ); const flatten = (array: Array>): Array => [].concat(...array); @@ -78,7 +84,7 @@ const expandIncludesAndExcludes = ( if (plugins.length === 0) return []; const selectedPlugins = plugins.map(plugin => - selectPlugins(pluginToRegExp(plugin), corejs), + selectPlugins(pluginToRegExp(plugin), type, corejs), ); const invalidRegExpList = plugins.filter( (p, i) => selectedPlugins[i].length === 0, diff --git a/packages/babel-preset-env/test/debug-fixtures/corejs-without-usebuiltins/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/corejs-without-usebuiltins/stdout.txt index 1480ffe6bec5..8edc822211ac 100644 --- a/packages/babel-preset-env/test/debug-fixtures/corejs-without-usebuiltins/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/corejs-without-usebuiltins/stdout.txt @@ -40,6 +40,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. Successfully compiled 1 file with Babel. \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-android/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-android/stdout.txt index f3d91c14ed87..9660624a053b 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-android/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-android/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-optional-catch-binding { "android":"4" } transform-named-capturing-groups-regex { "android":"4" } transform-reserved-words { "android":"4" } + transform-modules-commonjs { "android":"4" } + proposal-dynamic-import { "android":"4" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-electron/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-electron/stdout.txt index e0c6a95adc0d..ce32c796e65c 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-electron/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-electron/stdout.txt @@ -34,6 +34,8 @@ Using plugins: transform-named-capturing-groups-regex { "electron":"0.36" } transform-member-expression-literals { "electron":"0.36" } transform-property-literals { "electron":"0.36" } + transform-modules-commonjs { "electron":"0.36" } + proposal-dynamic-import { "electron":"0.36" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-force-all-transforms/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-force-all-transforms/stdout.txt index 988f64db332a..30fbdca39bfc 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-force-all-transforms/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-force-all-transforms/stdout.txt @@ -40,6 +40,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + syntax-dynamic-import { "chrome":"55" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-no-import/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-no-import/stdout.txt index ac37a584bfdf..8d7d5c3610d2 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-no-import/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-no-import/stdout.txt @@ -20,6 +20,8 @@ Using plugins: proposal-json-strings { "node":"6" } proposal-optional-catch-binding { "node":"6" } transform-named-capturing-groups-regex { "node":"6" } + transform-modules-commonjs { "node":"6" } + proposal-dynamic-import { "node":"6" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-proposals-chrome-71/stdout.txt index c5a336627064..1892aa8040bb 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-proposals-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-proposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-proposals/stdout.txt index 04e8ce0e5829..68c0e41d5803 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-proposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-proposals/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-shippedProposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-shippedProposals-chrome-71/stdout.txt index c5a336627064..1892aa8040bb 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-shippedProposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-shippedProposals-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-shippedProposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-shippedProposals/stdout.txt index 04e8ce0e5829..68c0e41d5803 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-shippedProposals/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-specific-targets/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-specific-targets/stdout.txt index a7c6a94b05aa..0ef9459d2b43 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-specific-targets/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-specific-targets/stdout.txt @@ -42,6 +42,8 @@ Using plugins: proposal-json-strings { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-optional-catch-binding { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } transform-named-capturing-groups-regex { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-modules-commonjs { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + proposal-dynamic-import { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-versions-decimals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-versions-decimals/stdout.txt index 3988359b77cf..52357b555629 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-versions-decimals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-versions-decimals/stdout.txt @@ -50,6 +50,8 @@ Using plugins: transform-named-capturing-groups-regex { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } transform-member-expression-literals { "electron":"0.36" } transform-property-literals { "electron":"0.36" } + transform-modules-commonjs { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + proposal-dynamic-import { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-versions-strings/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-versions-strings/stdout.txt index 2599a836d290..05a6f95b2cac 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-versions-strings/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2-versions-strings/stdout.txt @@ -39,6 +39,8 @@ Using plugins: proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-catch-binding { "chrome":"54", "ie":"10", "node":"6.10" } transform-named-capturing-groups-regex { "chrome":"54", "ie":"10", "node":"6.10" } + transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6.10" } + proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6.10" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2/stdout.txt index 943bad68b9b1..fd68de0c44c6 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs2/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs2/stdout.txt @@ -39,6 +39,8 @@ Using plugins: proposal-json-strings { "chrome":"54", "ie":"10", "node":"6" } proposal-optional-catch-binding { "chrome":"54", "ie":"10", "node":"6" } transform-named-capturing-groups-regex { "chrome":"54", "ie":"10", "node":"6" } + transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6" } + proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-all-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-all-chrome-71/stdout.txt index bbefff8cb204..2951c8d2839d 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-all-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-all-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-all/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-all/stdout.txt index 9c9fa026270b..09822b87afc2 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-all/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-all/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-android/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-android/stdout.txt index b73850b76698..85869080092e 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-android/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-android/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-optional-catch-binding { "android":"4" } transform-named-capturing-groups-regex { "android":"4" } transform-reserved-words { "android":"4" } + transform-modules-commonjs { "android":"4" } + proposal-dynamic-import { "android":"4" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-babel-polyfill/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-babel-polyfill/stdout.txt index 22616b88ea89..9e116b9ca002 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-babel-polyfill/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-babel-polyfill/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-electron/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-electron/stdout.txt index f554ec16ce1f..2db44452e27e 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-electron/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-electron/stdout.txt @@ -34,6 +34,8 @@ Using plugins: transform-named-capturing-groups-regex { "electron":"0.36" } transform-member-expression-literals { "electron":"0.36" } transform-property-literals { "electron":"0.36" } + transform-modules-commonjs { "electron":"0.36" } + proposal-dynamic-import { "electron":"0.36" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-chrome-71/stdout.txt index 1e83b69ce75f..9b5801afb435 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-proposals-chrome-71/stdout.txt index 5cf2958c3b05..f1855c04cb94 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-proposals-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-proposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-proposals/stdout.txt index bc007cc33283..87b297105bbf 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-proposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es-proposals/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es/stdout.txt index cf961ab95885..83949367f997 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-es/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-force-all-transforms/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-force-all-transforms/stdout.txt index 332da98e97bf..da1c67caeaf5 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-force-all-transforms/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-force-all-transforms/stdout.txt @@ -40,6 +40,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + syntax-dynamic-import { "chrome":"55" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-no-import/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-no-import/stdout.txt index 73ffcc5860ea..f5eaed804825 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-no-import/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-no-import/stdout.txt @@ -20,6 +20,8 @@ Using plugins: proposal-json-strings { "node":"6" } proposal-optional-catch-binding { "node":"6" } transform-named-capturing-groups-regex { "node":"6" } + transform-modules-commonjs { "node":"6" } + proposal-dynamic-import { "node":"6" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-proposals-chrome-71/stdout.txt index 415f49d21038..a561ed31a0c5 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-proposals-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-proposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-proposals/stdout.txt index e0cdc2017967..ad2dc8d7e10a 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-proposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-proposals/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-runtime-only-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-runtime-only-chrome-71/stdout.txt index 2420ffb75e8e..26521e3ce411 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-runtime-only-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-runtime-only-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-runtime-only/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-runtime-only/stdout.txt index 2420ffb75e8e..26521e3ce411 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-runtime-only/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-runtime-only/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-entries-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-entries-chrome-71/stdout.txt index e77af2686b72..41a8bda0a4c0 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-entries-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-entries-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-entries/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-entries/stdout.txt index d8ff0734f2d0..34ce13f88405 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-entries/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-entries/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-targets/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-targets/stdout.txt index 0be270e41146..799b42a28da5 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-targets/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-specific-targets/stdout.txt @@ -42,6 +42,8 @@ Using plugins: proposal-json-strings { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-optional-catch-binding { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } transform-named-capturing-groups-regex { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + transform-modules-commonjs { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + proposal-dynamic-import { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable-chrome-71/stdout.txt index 781f32ad0974..f286aae03105 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable-samsung-8.2/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable-samsung-8.2/stdout.txt index 50f7b3e20e25..e3b023fc70a1 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable-samsung-8.2/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable-samsung-8.2/stdout.txt @@ -14,6 +14,8 @@ Using plugins: proposal-json-strings { "samsung":"8.2" } proposal-optional-catch-binding { "samsung":"8.2" } transform-named-capturing-groups-regex { "samsung":"8.2" } + transform-modules-commonjs { "samsung":"8.2" } + proposal-dynamic-import { "samsung":"8.2" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable/stdout.txt index ac359171f3f1..27caa7f6dffa 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stable/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stage-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stage-chrome-71/stdout.txt index 415f49d21038..a561ed31a0c5 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stage-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stage-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stage/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stage/stdout.txt index e0cdc2017967..ad2dc8d7e10a 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stage/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-stage/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-decimals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-decimals/stdout.txt index 359bbdb07bdd..37f523184009 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-decimals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-decimals/stdout.txt @@ -50,6 +50,8 @@ Using plugins: transform-named-capturing-groups-regex { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } transform-member-expression-literals { "electron":"0.36" } transform-property-literals { "electron":"0.36" } + transform-modules-commonjs { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + proposal-dynamic-import { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings-minor-3.0/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings-minor-3.0/stdout.txt index d51520a95c36..e609f7f5a6d4 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings-minor-3.0/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings-minor-3.0/stdout.txt @@ -39,6 +39,8 @@ Using plugins: proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-catch-binding { "chrome":"54", "ie":"10", "node":"6.10" } transform-named-capturing-groups-regex { "chrome":"54", "ie":"10", "node":"6.10" } + transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6.10" } + proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6.10" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings-minor-3.1/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings-minor-3.1/stdout.txt index 9bdec21bb16c..2fd667e1edbe 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings-minor-3.1/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings-minor-3.1/stdout.txt @@ -39,6 +39,8 @@ Using plugins: proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-catch-binding { "chrome":"54", "ie":"10", "node":"6.10" } transform-named-capturing-groups-regex { "chrome":"54", "ie":"10", "node":"6.10" } + transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6.10" } + proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6.10" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings/stdout.txt index d51520a95c36..e609f7f5a6d4 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-versions-strings/stdout.txt @@ -39,6 +39,8 @@ Using plugins: proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-catch-binding { "chrome":"54", "ie":"10", "node":"6.10" } transform-named-capturing-groups-regex { "chrome":"54", "ie":"10", "node":"6.10" } + transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6.10" } + proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6.10" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-web-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-web-chrome-71/stdout.txt index 47e1b712c226..7915062dd76c 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-web-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-web-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-web/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-web/stdout.txt index 10497d8551ab..31e603812e9c 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-web/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3-web/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3/stdout.txt index be4132d6b1f0..712a1e1dcbb1 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-corejs3/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-corejs3/stdout.txt @@ -39,6 +39,8 @@ Using plugins: proposal-json-strings { "chrome":"54", "ie":"10", "node":"6" } proposal-optional-catch-binding { "chrome":"54", "ie":"10", "node":"6" } transform-named-capturing-groups-regex { "chrome":"54", "ie":"10", "node":"6" } + transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6" } + proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-no-import/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-no-import/stdout.txt index ac37a584bfdf..8d7d5c3610d2 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-no-import/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-no-import/stdout.txt @@ -20,6 +20,8 @@ Using plugins: proposal-json-strings { "node":"6" } proposal-optional-catch-binding { "node":"6" } transform-named-capturing-groups-regex { "node":"6" } + transform-modules-commonjs { "node":"6" } + proposal-dynamic-import { "node":"6" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-shippedProposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-shippedProposals/stdout.txt index 04e8ce0e5829..68c0e41d5803 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-shippedProposals/stdout.txt @@ -38,6 +38,8 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + transform-modules-commonjs {} + proposal-dynamic-import {} Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-uglify/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-uglify/stdout.txt index 2a97e7973107..e7948062c039 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-uglify/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs-uglify/stdout.txt @@ -43,6 +43,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + syntax-dynamic-import { "chrome":"55" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs/stdout.txt index 943bad68b9b1..fd68de0c44c6 100644 --- a/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/entry-no-corejs/stdout.txt @@ -39,6 +39,8 @@ Using plugins: proposal-json-strings { "chrome":"54", "ie":"10", "node":"6" } proposal-optional-catch-binding { "chrome":"54", "ie":"10", "node":"6" } transform-named-capturing-groups-regex { "chrome":"54", "ie":"10", "node":"6" } + transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6" } + proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt index b9408aae4462..2fa404a6d446 100644 --- a/packages/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/plugins-only/stdout.txt @@ -27,6 +27,8 @@ Using plugins: proposal-json-strings { "firefox":"52", "node":"7.4" } proposal-optional-catch-binding { "firefox":"52", "node":"7.4" } transform-named-capturing-groups-regex { "firefox":"52", "node":"7.4" } + transform-modules-commonjs { "firefox":"52", "node":"7.4" } + proposal-dynamic-import { "firefox":"52", "node":"7.4" } Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. Successfully compiled 1 file with Babel. \ No newline at end of file diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-chrome-71/stdout.txt index b3df5f0872ba..f3e6f360ea96 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-none/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-none/stdout.txt index fafdcfca187c..5f82e7187c64 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-none/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-none/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-proposals-chrome-71/stdout.txt index b3df5f0872ba..f3e6f360ea96 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-proposals-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-proposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-proposals/stdout.txt index 8d1136d823bd..430a23ee87e9 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-proposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-proposals/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-shippedProposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-shippedProposals/stdout.txt index 8d1136d823bd..430a23ee87e9 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-shippedProposals/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-with-import/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-with-import/stdout.txt index e976e00c5f93..8682c140a4c0 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-with-import/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2-with-import/stdout.txt @@ -15,6 +15,8 @@ Using plugins: proposal-json-strings { "chrome":"55" } proposal-optional-catch-binding { "chrome":"55" } transform-named-capturing-groups-regex { "chrome":"55" } + transform-modules-commonjs { "chrome":"55" } + proposal-dynamic-import { "chrome":"55" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2/stdout.txt index 8d1136d823bd..430a23ee87e9 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs2/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs2/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-chrome-71/stdout.txt index 3b0d7b91373c..e6cf48c68031 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-none/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-none/stdout.txt index fafdcfca187c..5f82e7187c64 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-none/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-none/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-proposals-chrome-71/stdout.txt index e3546e022a16..c1e4baec7483 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-proposals-chrome-71/stdout.txt @@ -12,6 +12,8 @@ Using plugins: syntax-object-rest-spread { "chrome":"71" } syntax-json-strings { "chrome":"71" } syntax-optional-catch-binding { "chrome":"71" } + transform-modules-commonjs { "chrome":"71" } + proposal-dynamic-import { "chrome":"71" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-proposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-proposals/stdout.txt index cec7b6803911..201d4da1235c 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-proposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-proposals/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-shippedProposals/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-shippedProposals/stdout.txt index c9d333c5820b..dcf94e17e1d4 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-shippedProposals/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-versions-strings-minor-3.0/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-versions-strings-minor-3.0/stdout.txt index 5c7a63345026..170f5231957f 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-versions-strings-minor-3.0/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-versions-strings-minor-3.0/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-versions-strings-minor-3.1/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-versions-strings-minor-3.1/stdout.txt index 5c7a63345026..170f5231957f 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-versions-strings-minor-3.1/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-versions-strings-minor-3.1/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-with-import/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-with-import/stdout.txt index e976e00c5f93..8682c140a4c0 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-with-import/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3-with-import/stdout.txt @@ -15,6 +15,8 @@ Using plugins: proposal-json-strings { "chrome":"55" } proposal-optional-catch-binding { "chrome":"55" } transform-named-capturing-groups-regex { "chrome":"55" } + transform-modules-commonjs { "chrome":"55" } + proposal-dynamic-import { "chrome":"55" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3/stdout.txt index 5c7a63345026..170f5231957f 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-corejs3/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-corejs3/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-no-corejs-none/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-no-corejs-none/stdout.txt index fafdcfca187c..5f82e7187c64 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-no-corejs-none/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-no-corejs-none/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/debug-fixtures/usage-no-corejs/stdout.txt b/packages/babel-preset-env/test/debug-fixtures/usage-no-corejs/stdout.txt index 8d1136d823bd..430a23ee87e9 100644 --- a/packages/babel-preset-env/test/debug-fixtures/usage-no-corejs/stdout.txt +++ b/packages/babel-preset-env/test/debug-fixtures/usage-no-corejs/stdout.txt @@ -38,6 +38,8 @@ Using plugins: proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-catch-binding { "chrome":"52", "firefox":"50", "ie":"11" } transform-named-capturing-groups-regex { "chrome":"52", "firefox":"50", "ie":"11" } + transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt index 61526c5b8070..3489d7294e09 100644 --- a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt @@ -26,6 +26,7 @@ Using plugins: proposal-json-strings { "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1" } proposal-optional-catch-binding { "chrome":"61", "edge":"16", "ios":"10.3", "opera":"48", "safari":"10.1" } transform-named-capturing-groups-regex { "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1" } + syntax-dynamic-import { "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt index af7e5f8e39c4..5b3c33fd0b12 100644 --- a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt @@ -26,6 +26,7 @@ Using plugins: proposal-json-strings { "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1" } proposal-optional-catch-binding { "chrome":"61", "edge":"16", "ios":"10.3", "opera":"48", "safari":"10.1" } transform-named-capturing-groups-regex { "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1" } + syntax-dynamic-import { "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt b/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt index 494481624f2f..ba01385d275e 100644 --- a/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt @@ -20,5 +20,7 @@ Using plugins: proposal-json-strings { "safari":"10" } proposal-optional-catch-binding { "safari":"10" } transform-named-capturing-groups-regex { "safari":"10" } + transform-modules-commonjs { "safari":"10" } + proposal-dynamic-import { "safari":"10" } Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. diff --git a/packages/babel-preset-env/test/index.spec.js b/packages/babel-preset-env/test/index.spec.js index 7b281f4e1885..ded00e6c2e14 100644 --- a/packages/babel-preset-env/test/index.spec.js +++ b/packages/babel-preset-env/test/index.spec.js @@ -1,6 +1,19 @@ "use strict"; const babelPresetEnv = require("../lib/index"); +const addCoreJS2UsagePlugin = require("../lib/polyfills/corejs2/usage-plugin") + .default; +const addCoreJS3UsagePlugin = require("../lib/polyfills/corejs3/usage-plugin") + .default; +const addRegeneratorUsagePlugin = require("../lib/polyfills/regenerator/usage-plugin") + .default; +const replaceCoreJS2EntryPlugin = require("../lib/polyfills/corejs2/entry-plugin") + .default; +const replaceCoreJS3EntryPlugin = require("../lib/polyfills/corejs3/entry-plugin") + .default; +const removeRegeneratorEntryPlugin = require("../lib/polyfills/regenerator/entry-plugin") + .default; +const transformations = require("../lib/module-transformations").default; describe("babel-preset-env", () => { describe("transformIncludesAndExcludes", () => { @@ -24,4 +37,215 @@ describe("babel-preset-env", () => { }); }); }); + describe("getModulesPluginNames", () => { + describe("modules is set to false", () => { + it("returns only syntax-dynamic-import", () => { + expect( + babelPresetEnv.getModulesPluginNames({ + modules: false, + transformations, + shouldTransformESM: false, + shouldTransformDynamicImport: false, + }), + ).toEqual(["syntax-dynamic-import"]); + }); + }); + describe("modules is not set to false", () => { + describe("ESMs should not be transformed", () => { + it("returns syntax-dynamic-import", () => { + expect( + babelPresetEnv.getModulesPluginNames({ + modules: "commonjs", + transformations, + shouldTransformESM: false, + shouldTransformDynamicImport: false, + }), + ).toEqual(["syntax-dynamic-import"]); + }); + }); + describe("ESMs should be transformed", () => { + describe("dynamic imports should not be transformed", () => { + it("returns specified modules transform and syntax-dynamic-import", () => { + expect( + babelPresetEnv.getModulesPluginNames({ + modules: "commonjs", + transformations, + shouldTransformESM: true, + shouldTransformDynamicImport: false, + }), + ).toEqual(["transform-modules-commonjs", "syntax-dynamic-import"]); + }); + }); + describe("dynamic imports should be transformed", () => { + it("returns specified modules transform and proposal-dynamic-import", () => { + expect( + babelPresetEnv.getModulesPluginNames({ + modules: "systemjs", + transformations, + shouldTransformESM: true, + shouldTransformDynamicImport: true, + }), + ).toEqual([ + "transform-modules-systemjs", + "proposal-dynamic-import", + ]); + }); + }); + }); + }); + }); + describe("getPolyfillPlugins", () => { + const staticProps = { + polyfillTargets: [], + include: new Set(), + exclude: new Set(), + proposals: false, + shippedProposals: false, + debug: false, + }; + describe("useBuiltIns is false", () => { + it("returns no polyfill plugins", () => { + expect( + babelPresetEnv.getPolyfillPlugins( + Object.assign( + { + useBuiltIns: false, + corejs: false, + regenerator: false, + }, + staticProps, + ), + ), + ).toEqual([]); + }); + }); + describe("useBuiltIns is not false", () => { + describe("corejs is not given", () => { + it("returns no polyfill plugins", () => { + expect( + babelPresetEnv.getPolyfillPlugins( + Object.assign( + { + useBuiltIns: "usage", + corejs: false, + regenerator: false, + }, + staticProps, + ), + ), + ).toEqual([]); + }); + }); + describe("useBuiltIns is set to usage", () => { + describe("using corejs 2", () => { + it("returns an array with core js 2 usage plugin", () => { + const polyfillPlugins = babelPresetEnv.getPolyfillPlugins( + Object.assign( + { + useBuiltIns: "usage", + corejs: { major: 2 }, + regenerator: false, + }, + staticProps, + ), + ); + expect(polyfillPlugins.length).toBe(1); + expect(polyfillPlugins[0][0]).toEqual(addCoreJS2UsagePlugin); + }); + }); + describe("using corejs 3", () => { + describe("regenerator is set to false", () => { + it("returns an array with core js 3 usage plugin", () => { + const polyfillPlugins = babelPresetEnv.getPolyfillPlugins( + Object.assign( + { + useBuiltIns: "usage", + corejs: { major: 3 }, + regenerator: false, + }, + staticProps, + ), + ); + expect(polyfillPlugins.length).toBe(1); + expect(polyfillPlugins[0][0]).toEqual(addCoreJS3UsagePlugin); + }); + }); + + describe("regenerator is set to true", () => { + it("returns an array with core js 3 usage plugin and add regenerator usage plugin", () => { + const polyfillPlugins = babelPresetEnv.getPolyfillPlugins( + Object.assign( + { + useBuiltIns: "usage", + corejs: { major: 3 }, + regenerator: true, + }, + staticProps, + ), + ); + expect(polyfillPlugins.length).toBe(2); + expect(polyfillPlugins[0][0]).toEqual(addCoreJS3UsagePlugin); + expect(polyfillPlugins[1][0]).toEqual(addRegeneratorUsagePlugin); + }); + }); + }); + }); + describe("useBuiltIns is set to entry", () => { + describe("using corejs 2", () => { + it("returns an array with core js 2 entry plugin", () => { + const polyfillPlugins = babelPresetEnv.getPolyfillPlugins( + Object.assign( + { + useBuiltIns: "entry", + corejs: { major: 2 }, + regenerator: true, + }, + staticProps, + ), + ); + expect(polyfillPlugins.length).toBe(1); + expect(polyfillPlugins[0][0]).toEqual(replaceCoreJS2EntryPlugin); + }); + }); + describe("using corejs 3", () => { + describe("regenerator is set to true", () => { + it("returns an array with core js 3 entry plugin", () => { + const polyfillPlugins = babelPresetEnv.getPolyfillPlugins( + Object.assign( + { + useBuiltIns: "entry", + corejs: { major: 3 }, + regenerator: true, + }, + staticProps, + ), + ); + expect(polyfillPlugins.length).toBe(1); + expect(polyfillPlugins[0][0]).toEqual(replaceCoreJS3EntryPlugin); + }); + }); + + describe("regenerator is set to false", () => { + it("returns an array with core js 3 entry plugin and remove regenerator entry plugin", () => { + const polyfillPlugins = babelPresetEnv.getPolyfillPlugins( + Object.assign( + { + useBuiltIns: "entry", + corejs: { major: 3 }, + regenerator: false, + }, + staticProps, + ), + ); + expect(polyfillPlugins.length).toBe(2); + expect(polyfillPlugins[0][0]).toEqual(replaceCoreJS3EntryPlugin); + expect(polyfillPlugins[1][0]).toEqual( + removeRegeneratorEntryPlugin, + ); + }); + }); + }); + }); + }); + }); }); diff --git a/packages/babel-preset-env/test/normalize-options.spec.js b/packages/babel-preset-env/test/normalize-options.spec.js index eefb69e45f46..abe1ba25b9ea 100644 --- a/packages/babel-preset-env/test/normalize-options.spec.js +++ b/packages/babel-preset-env/test/normalize-options.spec.js @@ -84,6 +84,24 @@ describe("normalize-options", () => { }); }); }); + + it("throws when including module plugins", () => { + expect(() => + normalizeOptions.default({ include: ["proposal-dynamic-import"] }), + ).toThrow(); + expect(() => + normalizeOptions.default({ include: ["transform-modules-amd"] }), + ).toThrow(); + }); + + it("allows exclusion of module plugins ", () => { + expect(() => + normalizeOptions.default({ exclude: ["proposal-dynamic-import"] }), + ).not.toThrow(); + expect(() => + normalizeOptions.default({ exclude: ["transform-modules-commonjs"] }), + ).not.toThrow(); + }); }); describe("Config format validation", () => {