Fix esmodules: true without specified browsers (#12908)

* Fix `esmodules: true` without specified browsers

* fix
This commit is contained in:
Nicolò Ribaudo 2021-03-02 08:16:25 +01:00 committed by GitHub
parent 82e089c7dd
commit 0d9ad433b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 16 additions and 1 deletions

3
config.js Normal file
View File

@ -0,0 +1,3 @@
module.exports = {
targets: { esmodules: true },
};

View File

@ -205,7 +205,7 @@ export default function getTargets(
// `esmodules` as a target indicates the specific set of browsers supporting ES Modules. // `esmodules` as a target indicates the specific set of browsers supporting ES Modules.
// These values OVERRIDE the `browsers` field. // These values OVERRIDE the `browsers` field.
if (esmodules && (esmodules !== "intersect" || !browsers)) { if (esmodules && (esmodules !== "intersect" || !browsers?.length)) {
browsers = Object.keys(ESM_SUPPORT) browsers = Object.keys(ESM_SUPPORT)
.map(browser => `${browser} >= ${ESM_SUPPORT[browser]}`) .map(browser => `${browser} >= ${ESM_SUPPORT[browser]}`)
.join(", "); .join(", ");

View File

@ -267,6 +267,12 @@ describe("getTargets", () => {
}); });
it("'intersect' behaves like 'true' if no browsers are specified", () => { 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( expect(
getTargets( getTargets(
{ esmodules: "intersect" }, { esmodules: "intersect" },

View File

@ -0,0 +1 @@
a ** b;

View File

@ -0,0 +1,4 @@
{
"targets": { "esmodules": true },
"presets": ["env"]
}

View File

@ -0,0 +1 @@
a ** b;