separate default builtins for platforms (#226)
This commit is contained in:
parent
a9f7c7db4c
commit
ae3dfda1d6
@ -1,4 +1,4 @@
|
||||
export default [
|
||||
export const defaultWebIncludes = [
|
||||
"web.timers",
|
||||
"web.immediate",
|
||||
"web.dom.iterable"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import browserslist from "browserslist";
|
||||
import builtInsList from "../data/built-ins.json";
|
||||
import defaultInclude from "./default-includes";
|
||||
import { defaultWebIncludes } from "./default-includes";
|
||||
import moduleTransformations from "./module-transformations";
|
||||
import normalizeOptions, { getElectronChromeVersion } from "./normalize-options.js";
|
||||
import pluginList from "../data/plugins.json";
|
||||
@ -139,7 +139,7 @@ const logPlugin = (plugin, targets, list) => {
|
||||
};
|
||||
|
||||
const filterItem = (targets, exclusions, list, item) => {
|
||||
const isDefault = defaultInclude.indexOf(item) >= 0;
|
||||
const isDefault = defaultWebIncludes.indexOf(item) >= 0;
|
||||
const notExcluded = exclusions.indexOf(item) === -1;
|
||||
|
||||
if (isDefault) return notExcluded;
|
||||
@ -161,6 +161,14 @@ export const transformIncludesAndExcludes = (opts) => ({
|
||||
builtIns: opts.filter((opt) => opt.match(/^(es\d+|web)\./))
|
||||
});
|
||||
|
||||
function getPlatformSpecificDefaultFor(targets) {
|
||||
const targetNames = Object.keys(targets);
|
||||
const isAnyTarget = !targetNames.length;
|
||||
const isWebTarget = targetNames.some((name) => name !== "node");
|
||||
|
||||
return (isAnyTarget || isWebTarget) ? defaultWebIncludes : [];
|
||||
}
|
||||
|
||||
export default function buildPreset(context, opts = {}) {
|
||||
const validatedOptions = normalizeOptions(opts);
|
||||
const { debug, loose, moduleType, useBuiltIns } = validatedOptions;
|
||||
@ -181,7 +189,7 @@ export default function buildPreset(context, opts = {}) {
|
||||
polyfillTargets = getBuiltInTargets(targets);
|
||||
const filterBuiltIns = filterItem.bind(null, polyfillTargets, exclude.builtIns, builtInsList);
|
||||
polyfills = Object.keys(builtInsList)
|
||||
.concat(defaultInclude)
|
||||
.concat(getPlatformSpecificDefaultFor(polyfillTargets))
|
||||
.filter(filterBuiltIns)
|
||||
.concat(include.builtIns);
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import invariant from "invariant";
|
||||
import { electronToChromium } from "electron-to-chromium";
|
||||
import builtInsList from "../data/built-ins.json";
|
||||
import defaultInclude from "./default-includes";
|
||||
import { defaultWebIncludes } from "./default-includes";
|
||||
import moduleTransformations from "./module-transformations";
|
||||
import pluginFeatures from "../data/plugin-features";
|
||||
|
||||
@ -9,7 +9,7 @@ const validIncludesAndExcludes = [
|
||||
...Object.keys(pluginFeatures),
|
||||
...Object.keys(moduleTransformations).map((m) => moduleTransformations[m]),
|
||||
...Object.keys(builtInsList),
|
||||
...defaultInclude
|
||||
...defaultWebIncludes,
|
||||
];
|
||||
|
||||
let hasBeenWarned = false;
|
||||
|
||||
1
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/actual.js
vendored
Normal file
1
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import "babel-polyfill";
|
||||
7
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/expected.js
vendored
Normal file
7
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/expected.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
import "core-js/modules/es7.string.pad-start";
|
||||
import "core-js/modules/es7.string.pad-end";
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
import "regenerator-runtime/runtime";
|
||||
|
||||
13
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/options.json
vendored
Normal file
13
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node-web/options.json
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"chrome": 55,
|
||||
"node": 7.6,
|
||||
"uglify": true
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
1
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/actual.js
vendored
Normal file
1
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import "babel-polyfill";
|
||||
4
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/expected.js
vendored
Normal file
4
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/expected.js
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
import "core-js/modules/es7.string.pad-start";
|
||||
import "core-js/modules/es7.string.pad-end";
|
||||
import "regenerator-runtime/runtime";
|
||||
|
||||
12
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/options.json
vendored
Normal file
12
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-node/options.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"node": 7.6,
|
||||
"uglify": true
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user