diff --git a/packages/babel-preset-env/src/targets-parser.js b/packages/babel-preset-env/src/targets-parser.js index ab009b0049..445e0fbdee 100644 --- a/packages/babel-preset-env/src/targets-parser.js +++ b/packages/babel-preset-env/src/targets-parser.js @@ -15,6 +15,8 @@ import browserModulesData from "../data/built-in-modules.json"; import { TargetNames } from "./options"; import type { Targets } from "./types"; +const browserslistDefaults = browserslist.defaults; + const validateTargetNames = (validTargets, targets) => { for (const target in targets) { if (!TargetNames[target]) { @@ -178,6 +180,9 @@ const getTargets = (targets: Object = {}, options: Object = {}): Targets => { const browsers = browserslist(browsersquery, { path: options.configPath }); const queryBrowsers = getLowestVersions(browsers); targets = mergeBrowsers(queryBrowsers, targets); + + // Reset browserslist defaults + browserslist.defaults = browserslistDefaults; } // Parse remaining targets diff --git a/packages/babel-preset-env/test/targets-parser.spec.js b/packages/babel-preset-env/test/targets-parser.spec.js index e458fe291f..59bba47af6 100644 --- a/packages/babel-preset-env/test/targets-parser.spec.js +++ b/packages/babel-preset-env/test/targets-parser.spec.js @@ -1,3 +1,4 @@ +import browserslist from "browserslist"; import getTargets from "../lib/targets-parser"; describe("getTargets", () => { @@ -19,6 +20,16 @@ describe("getTargets", () => { }); }); + it("does not clobber browserslists defaults", () => { + const browserslistDefaults = browserslist.defaults; + + getTargets({ + browsers: "chrome 56, ie 11, firefox 51, safari 9", + }); + + expect(browserslist.defaults).toEqual(browserslistDefaults); + }); + describe("validation", () => { it("throws on invalid target name", () => { const invalidTargetName = () => {