98 lines
2.7 KiB
JavaScript
98 lines
2.7 KiB
JavaScript
"use strict";
|
|
|
|
module.exports = function(api) {
|
|
const env = api.env();
|
|
|
|
const includeCoverage = process.env.BABEL_COVERAGE === "true";
|
|
|
|
const envOpts = {
|
|
loose: true,
|
|
modules: false,
|
|
exclude: ["transform-typeof-symbol"],
|
|
};
|
|
|
|
let convertESM = true;
|
|
let ignoreLib = true;
|
|
|
|
switch (env) {
|
|
// Configs used during bundling builds.
|
|
case "babel-parser":
|
|
case "standalone":
|
|
convertESM = false;
|
|
ignoreLib = false;
|
|
break;
|
|
case "production":
|
|
// Config during builds before publish.
|
|
envOpts.targets = {
|
|
node: "6.9",
|
|
};
|
|
break;
|
|
case "development":
|
|
envOpts.debug = true;
|
|
envOpts.targets = {
|
|
node: "current",
|
|
};
|
|
break;
|
|
case "test":
|
|
envOpts.targets = {
|
|
node: "current",
|
|
};
|
|
break;
|
|
}
|
|
|
|
const config = {
|
|
comments: false,
|
|
ignore: [
|
|
// These may not be strictly necessary with the newly-limited scope of
|
|
// babelrc searching, but including them for now because we had them
|
|
// in our .babelignore before.
|
|
"packages/*/test/fixtures",
|
|
ignoreLib ? "packages/*/lib" : null,
|
|
"packages/babel-standalone/babel.js",
|
|
"packages/babel-preset-env-standalone/babel-preset-env.js",
|
|
].filter(Boolean),
|
|
presets: [["@babel/env", envOpts]],
|
|
plugins: [
|
|
// TODO: Use @babel/preset-flow when
|
|
// https://github.com/babel/babel/issues/7233 is fixed
|
|
"@babel/plugin-transform-flow-strip-types",
|
|
["@babel/proposal-class-properties", { loose: true }],
|
|
"@babel/proposal-export-namespace-from",
|
|
"@babel/proposal-numeric-separator",
|
|
[
|
|
"@babel/proposal-object-rest-spread",
|
|
{ useBuiltIns: true, loose: true },
|
|
],
|
|
|
|
// Explicitly use the lazy version of CommonJS modules.
|
|
convertESM ? ["@babel/transform-modules-commonjs", { lazy: true }] : null,
|
|
].filter(Boolean),
|
|
overrides: [
|
|
{
|
|
test: "packages/babel-parser",
|
|
plugins: [
|
|
"babel-plugin-transform-charcodes",
|
|
["@babel/transform-for-of", { assumeArray: true }],
|
|
],
|
|
},
|
|
{
|
|
test: "./packages/babel-register",
|
|
plugins: [
|
|
// Override the root options to disable lazy imports for babel-register
|
|
// because otherwise the require hook will try to lazy-import things
|
|
// leading to dependency cycles.
|
|
convertESM ? "@babel/transform-modules-commonjs" : null,
|
|
].filter(Boolean),
|
|
},
|
|
],
|
|
};
|
|
|
|
// we need to do this as long as we do not test everything from source
|
|
if (includeCoverage) {
|
|
config.auxiliaryCommentBefore = "istanbul ignore next";
|
|
config.plugins.push("babel-plugin-istanbul");
|
|
}
|
|
|
|
return config;
|
|
};
|