From 0d9ad433b47878aa1de6edd324c6dcd4cb1e2d7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Tue, 2 Mar 2021 08:16:25 +0100 Subject: [PATCH] Fix `esmodules: true` without specified browsers (#12908) * Fix `esmodules: true` without specified browsers * fix --- config.js | 3 +++ packages/babel-helper-compilation-targets/src/index.js | 2 +- .../test/targets-parser.spec.js | 6 ++++++ .../fixtures/sanity/top-level-targets-esmodules/input.js | 1 + .../sanity/top-level-targets-esmodules/options.json | 4 ++++ .../fixtures/sanity/top-level-targets-esmodules/output.js | 1 + 6 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 config.js create mode 100644 packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/input.js create mode 100644 packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/options.json create mode 100644 packages/babel-preset-env/test/fixtures/sanity/top-level-targets-esmodules/output.js 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;