diff --git a/experimental/babel-preset-env/data/electronToChromium.js b/experimental/babel-preset-env/data/electronToChromium.js new file mode 100644 index 0000000000..7e26adf35d --- /dev/null +++ b/experimental/babel-preset-env/data/electronToChromium.js @@ -0,0 +1,10 @@ +module.exports = { + "1.5": 54, + "1.4": 53, + "1.3": 52, + "1.2": 51, + "1.1": 50, + "1.0": 50, + "0.37": 49, + "0.36": 47, +}; \ No newline at end of file diff --git a/experimental/babel-preset-env/src/index.js b/experimental/babel-preset-env/src/index.js index 476a92e536..9ea7cd7d85 100644 --- a/experimental/babel-preset-env/src/index.js +++ b/experimental/babel-preset-env/src/index.js @@ -2,6 +2,7 @@ import pluginList from "../data/plugins.json"; import builtInsList from "../data/builtIns.json"; import browserslist from "browserslist"; import transformPolyfillRequirePlugin from "./transformPolyfillRequirePlugin"; +import electronToChromium from "../data/electronToChromium"; export const MODULE_TRANSFORMATIONS = { "amd": "transform-es2015-modules-amd", @@ -81,11 +82,31 @@ export const getCurrentNodeVersion = () => { return parseFloat(process.versions.node); }; +export const electronVersionToChromeVersion = (semverVer) => { + const m = semverVer.match(/^(\d+\.\d+)/); + if (!m) { + throw new Error("Electron version must be a semver version"); + } + + let result = electronToChromium[m[1]]; + if (!result) { + throw new Error(`Electron version ${m[1]} is either too old or too new`); + } + + return result; +}; + export const getTargets = (targetOpts = {}) => { if (targetOpts.node === true || targetOpts.node === "current") { targetOpts.node = getCurrentNodeVersion(); } + // Rewrite Electron versions to their Chrome equivalents + if (targetOpts.electron) { + targetOpts.chrome = electronVersionToChromeVersion(targetOpts.electron); + delete targetOpts.electron; + } + const browserOpts = targetOpts.browsers; if (isBrowsersQueryValid(browserOpts)) { const queryBrowsers = getLowestVersions(browserslist(browserOpts));