diff --git a/config.js b/config.js new file mode 100644 index 000000000000..594300ed742b --- /dev/null +++ b/config.js @@ -0,0 +1,3 @@ +module.exports = { + targets: { esmodules: true }, +}; diff --git a/packages/babel-helper-compilation-targets/src/index.js b/packages/babel-helper-compilation-targets/src/index.js index b6ce5284ecb4..be5861d6ca31 100644 --- a/packages/babel-helper-compilation-targets/src/index.js +++ b/packages/babel-helper-compilation-targets/src/index.js @@ -205,7 +205,7 @@ export default function getTargets( // `esmodules` as a target indicates the specific set of browsers supporting ES Modules. // These values OVERRIDE the `browsers` field. - if (esmodules && (esmodules !== "intersect" || !browsers)) { + if (esmodules && (esmodules !== "intersect" || !browsers?.length)) { browsers = Object.keys(ESM_SUPPORT) .map(browser => `${browser} >= ${ESM_SUPPORT[browser]}`) .join(", "); diff --git a/packages/babel-helper-compilation-targets/test/targets-parser.spec.js b/packages/babel-helper-compilation-targets/test/targets-parser.spec.js index 2119db119928..e9c78872a0de 100644 --- a/packages/babel-helper-compilation-targets/test/targets-parser.spec.js +++ b/packages/babel-helper-compilation-targets/test/targets-parser.spec.js @@ -267,6 +267,12 @@ describe("getTargets", () => { }); it("'intersect' behaves like 'true' if no browsers are specified", () => { + expect(getTargets({ esmodules: "intersect" })).toEqual( + getTargets({ esmodules: true }, { ignoreBrowserslistConfig: true }), + ); + }); + + it("'intersect' behaves like 'true' if no browsers are specified and the browserslist config is ignored", () => { expect( getTargets( { esmodules: "intersect" }, diff --git a/packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/input.js b/packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/input.js new file mode 100644 index 000000000000..3738b805a105 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/input.js @@ -0,0 +1 @@ +a ** b; diff --git a/packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/options.json b/packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/options.json new file mode 100644 index 000000000000..01263ed505b3 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/options.json @@ -0,0 +1,4 @@ +{ + "targets": { "esmodules": true }, + "presets": ["env"] +} diff --git a/packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/output.js b/packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/output.js new file mode 100644 index 000000000000..3738b805a105 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/output.js @@ -0,0 +1 @@ +a ** b;