1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- "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;
- };
|