Centralize Babel's own compilation config to make it easier to follow. (#7599)
This commit is contained in:
parent
edb0a70e14
commit
6d6fe844fd
111
.babelrc.js
111
.babelrc.js
@ -1,48 +1,69 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const env = process.env.BABEL_ENV || process.env.NODE_ENV;
|
module.exports = function(api) {
|
||||||
const envOpts = {
|
const env = api.env();
|
||||||
loose: true,
|
|
||||||
|
const includeCoverage = process.env.BABEL_COVERAGE === "true";
|
||||||
|
|
||||||
|
const envOpts = {
|
||||||
|
loose: true,
|
||||||
|
modules: false,
|
||||||
|
exclude: ["transform-typeof-symbol"],
|
||||||
|
};
|
||||||
|
|
||||||
|
let convertESM = true;
|
||||||
|
|
||||||
|
switch (env) {
|
||||||
|
// Configs used during bundling builds.
|
||||||
|
case "babylon":
|
||||||
|
case "standalone":
|
||||||
|
convertESM = false;
|
||||||
|
break;
|
||||||
|
case "production":
|
||||||
|
// Config during builds before publish.
|
||||||
|
break;
|
||||||
|
case "development":
|
||||||
|
envOpts.debug = true;
|
||||||
|
envOpts.targets = {
|
||||||
|
node: "current",
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "test":
|
||||||
|
envOpts.targets = {
|
||||||
|
node: "current",
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const config = {
|
||||||
|
comments: false,
|
||||||
|
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 }],
|
||||||
|
convertESM ? "@babel/transform-modules-commonjs" : null,
|
||||||
|
].filter(Boolean),
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
test: "packages/babylon",
|
||||||
|
plugins: [
|
||||||
|
"babel-plugin-transform-charcodes",
|
||||||
|
["@babel/transform-for-of", { assumeArray: true }],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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;
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (env) {
|
|
||||||
case "development":
|
|
||||||
envOpts.debug = true;
|
|
||||||
// fall-through
|
|
||||||
case "test":
|
|
||||||
case "cov":
|
|
||||||
envOpts.targets = {
|
|
||||||
node: "current",
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const config = {
|
|
||||||
comments: false,
|
|
||||||
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 }],
|
|
||||||
],
|
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
test: "packages/babylon",
|
|
||||||
plugins: [
|
|
||||||
"babel-plugin-transform-charcodes",
|
|
||||||
["@babel/transform-for-of", { assumeArray: true }],
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
// we need to do this as long as we do not test everything from source
|
|
||||||
if (env === "cov") {
|
|
||||||
config.auxiliaryCommentBefore = "istanbul ignore next";
|
|
||||||
config.plugins.push("babel-plugin-istanbul");
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = config;
|
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
const cloneDeep = require("lodash/cloneDeep");
|
|
||||||
const babelrc = require("./.babelrc.js");
|
|
||||||
|
|
||||||
const config = cloneDeep(babelrc);
|
|
||||||
|
|
||||||
const presetEnv = config.presets.find(preset => preset[0] === "@babel/env");
|
|
||||||
|
|
||||||
if (!presetEnv) {
|
|
||||||
throw new Error("Error while extracting @preset/env from .babelrc.js");
|
|
||||||
}
|
|
||||||
|
|
||||||
presetEnv[1].modules = false;
|
|
||||||
|
|
||||||
module.exports = config;
|
|
||||||
@ -98,8 +98,9 @@ function buildRollup(packages) {
|
|||||||
format: "cjs",
|
format: "cjs",
|
||||||
plugins: [
|
plugins: [
|
||||||
rollupBabel({
|
rollupBabel({
|
||||||
|
envName: "babylon",
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
extends: "./.babelrc.rollup.js",
|
extends: "./.babelrc.js",
|
||||||
}),
|
}),
|
||||||
rollupNodeResolve(),
|
rollupNodeResolve(),
|
||||||
],
|
],
|
||||||
|
|||||||
6
Makefile
6
Makefile
@ -2,7 +2,7 @@ MAKEFLAGS = -j1
|
|||||||
FLOW_COMMIT = 622bbc4f07acb77eb1109830c70815f827401d90
|
FLOW_COMMIT = 622bbc4f07acb77eb1109830c70815f827401d90
|
||||||
TEST262_COMMIT = 52f70e2f637731aae92a9c9a2d831310c3ab2e1e
|
TEST262_COMMIT = 52f70e2f637731aae92a9c9a2d831310c3ab2e1e
|
||||||
|
|
||||||
export NODE_ENV = test
|
export BABEL_ENV = test
|
||||||
|
|
||||||
# Fix color output until TravisCI fixes https://github.com/travis-ci/travis-ci/issues/7967
|
# Fix color output until TravisCI fixes https://github.com/travis-ci/travis-ci/issues/7967
|
||||||
export FORCE_COLOR = true
|
export FORCE_COLOR = true
|
||||||
@ -22,7 +22,7 @@ build: clean
|
|||||||
node scripts/generators/typescript.js > ./packages/babel-types/lib/index.d.ts
|
node scripts/generators/typescript.js > ./packages/babel-types/lib/index.d.ts
|
||||||
# generate docs
|
# generate docs
|
||||||
node scripts/generators/docs.js > ./packages/babel-types/README.md
|
node scripts/generators/docs.js > ./packages/babel-types/README.md
|
||||||
ifneq ("$(BABEL_ENV)", "cov")
|
ifneq ("$(BABEL_COVERAGE)", "true")
|
||||||
make build-standalone
|
make build-standalone
|
||||||
make build-preset-env-standalone
|
make build-preset-env-standalone
|
||||||
endif
|
endif
|
||||||
@ -82,7 +82,7 @@ test-ci:
|
|||||||
|
|
||||||
test-ci-coverage: SHELL:=/bin/bash
|
test-ci-coverage: SHELL:=/bin/bash
|
||||||
test-ci-coverage:
|
test-ci-coverage:
|
||||||
BABEL_ENV=cov make bootstrap
|
BABEL_COVERAGE=true BABEL_ENV=test make bootstrap
|
||||||
TEST_TYPE=cov ./scripts/test-cov.sh
|
TEST_TYPE=cov ./scripts/test-cov.sh
|
||||||
bash <(curl -s https://codecov.io/bash) -f coverage/coverage-final.json
|
bash <(curl -s https://codecov.io/bash) -f coverage/coverage-final.json
|
||||||
|
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "7.0.0-beta.41",
|
"@babel/cli": "7.0.0-beta.41",
|
||||||
"@babel/core": "7.0.0-beta.41",
|
"@babel/core": "7.0.0-beta.41",
|
||||||
|
"@babel/plugin-transform-modules-commonjs": "7.0.0-beta.41",
|
||||||
"@babel/preset-env": "7.0.0-beta.41",
|
"@babel/preset-env": "7.0.0-beta.41",
|
||||||
"@babel/preset-flow": "7.0.0-beta.41",
|
"@babel/preset-flow": "7.0.0-beta.41",
|
||||||
"@babel/preset-stage-0": "7.0.0-beta.41",
|
"@babel/preset-stage-0": "7.0.0-beta.41",
|
||||||
|
|||||||
@ -39,25 +39,18 @@ function webpackBuild(opts) {
|
|||||||
test: /\.js$/,
|
test: /\.js$/,
|
||||||
loader: "babel-loader",
|
loader: "babel-loader",
|
||||||
options: {
|
options: {
|
||||||
|
// Use the bundled config so that module syntax is passed through
|
||||||
|
// for Webpack.
|
||||||
|
envName: "standalone",
|
||||||
|
|
||||||
// Some of the node_modules may have their own "babel" section in
|
// Some of the node_modules may have their own "babel" section in
|
||||||
// their project.json (or a ".babelrc" file). We need to ignore
|
// their project.json (or a ".babelrc" file). We need to ignore
|
||||||
// those as we're using our own Babel options.
|
// those as we're using our own Babel options.
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
presets: [
|
|
||||||
[
|
// We explicitly load the `.babelrc.js` file since searching is
|
||||||
"@babel/env",
|
// turned off, but we still want to use the main config.
|
||||||
{
|
extends: "./.babelrc.js",
|
||||||
loose: true,
|
|
||||||
exclude: ["transform-typeof-symbol"],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
exclude: /node_modules/,
|
|
||||||
presets: [["@babel/stage-0", { loose: true }]],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user