From 540f9b2ad663fa683fabfb3e162325611b7fc0e6 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Mon, 13 Mar 2017 14:08:47 -0700 Subject: [PATCH 1/7] Remove the nonstandard basename option. --- packages/babel-core/src/transformation/file/index.js | 2 -- .../babel-plugin-transform-es2015-modules-umd/src/index.js | 3 ++- .../babel-plugin-transform-react-display-name/src/index.js | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js index 96353a8a8c..9675868d3a 100644 --- a/packages/babel-core/src/transformation/file/index.js +++ b/packages/babel-core/src/transformation/file/index.js @@ -141,8 +141,6 @@ export default class File extends Store { opts.moduleIds = true; } - opts.basename = path.basename(opts.filename, path.extname(opts.filename)); - defaults(opts, { moduleRoot: opts.sourceRoot, }); diff --git a/packages/babel-plugin-transform-es2015-modules-umd/src/index.js b/packages/babel-plugin-transform-es2015-modules-umd/src/index.js index 72fd6fe7a5..072275ed7d 100644 --- a/packages/babel-plugin-transform-es2015-modules-umd/src/index.js +++ b/packages/babel-plugin-transform-es2015-modules-umd/src/index.js @@ -98,7 +98,8 @@ export default function ({ types: t }) { } }); - const moduleNameOrBasename = moduleName ? moduleName.value : this.file.opts.basename; + const moduleNameOrBasename = moduleName ? moduleName.value : + basename(this.file.opts.filename, extname(this.file.opts.filename)); let globalToAssign = t.memberExpression( t.identifier("global"), t.identifier(t.toIdentifier(moduleNameOrBasename)) ); diff --git a/packages/babel-plugin-transform-react-display-name/src/index.js b/packages/babel-plugin-transform-react-display-name/src/index.js index f80f67c8dd..d94d657c11 100644 --- a/packages/babel-plugin-transform-react-display-name/src/index.js +++ b/packages/babel-plugin-transform-react-display-name/src/index.js @@ -42,7 +42,7 @@ export default function ({ types: t }) { visitor: { ExportDefaultDeclaration({ node }, state) { if (isCreateClass(node.declaration)) { - let displayName = state.file.opts.basename; + let displayName = path.basename(state.file.opts.filename, path.extname(state.file.opts.filename)); // ./{module name}/index.js if (displayName === "index") { From 188fe105c230d3d2b6995ada39e9e9416950a93a Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Mon, 13 Mar 2017 14:15:16 -0700 Subject: [PATCH 2/7] Move option-defaulting to option-manager. --- .../src/transformation/file/index.js | 36 +------------------ .../file/options/option-manager.js | 32 ++++++++++++++++- 2 files changed, 32 insertions(+), 36 deletions(-) diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js index 9675868d3a..6799b2dd2d 100644 --- a/packages/babel-core/src/transformation/file/index.js +++ b/packages/babel-core/src/transformation/file/index.js @@ -9,7 +9,6 @@ import { NodePath, Hub, Scope } from "babel-traverse"; import sourceMap from "source-map"; import generate from "babel-generator"; import codeFrame from "babel-code-frame"; -import defaults from "lodash/defaults"; import traverse from "babel-traverse"; import Logger from "./logger"; import Store from "../../store"; @@ -46,7 +45,7 @@ export default class File extends Store { this.log = new Logger(this, opts.filename || "unknown"); - opts = this.initOptions(opts); + opts = this.log.wrap(() => new OptionManager().init(opts)); let passes = []; if (opts.plugins) passes.push(opts.plugins); @@ -130,39 +129,6 @@ export default class File extends Store { } } - initOptions(opts) { - opts = this.log.wrap(() => new OptionManager().init(opts)); - - if (opts.inputSourceMap) { - opts.sourceMaps = true; - } - - if (opts.moduleId) { - opts.moduleIds = true; - } - - defaults(opts, { - moduleRoot: opts.sourceRoot, - }); - - defaults(opts, { - sourceRoot: opts.moduleRoot, - }); - - defaults(opts, { - filenameRelative: opts.filename, - }); - - const basenameRelative = path.basename(opts.filenameRelative); - - defaults(opts, { - sourceFileName: basenameRelative, - sourceMapTarget: basenameRelative, - }); - - return opts; - } - getModuleName(): ?string { const opts = this.opts; if (!opts.moduleIds) { diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js index e79c3b7ee0..8e1f9cdf7d 100644 --- a/packages/babel-core/src/transformation/file/options/option-manager.js +++ b/packages/babel-core/src/transformation/file/options/option-manager.js @@ -3,6 +3,7 @@ import Plugin from "../../plugin"; import * as messages from "babel-messages"; import resolvePlugin from "../../../helpers/resolve-plugin"; import resolvePreset from "../../../helpers/resolve-preset"; +import defaults from "lodash/defaults"; import cloneDeepWith from "lodash/cloneDeepWith"; import merge from "../../../helpers/merge"; import removed from "./removed"; @@ -376,7 +377,36 @@ export default class OptionManager { this.mergeOptions(config); } - return this.options; + opts = this.options; + + if (opts.inputSourceMap) { + opts.sourceMaps = true; + } + + if (opts.moduleId) { + opts.moduleIds = true; + } + + defaults(opts, { + moduleRoot: opts.sourceRoot, + }); + + defaults(opts, { + sourceRoot: opts.moduleRoot, + }); + + defaults(opts, { + filenameRelative: opts.filename, + }); + + const basenameRelative = path.basename(opts.filenameRelative); + + defaults(opts, { + sourceFileName: basenameRelative, + sourceMapTarget: basenameRelative, + }); + + return opts; } } From c1be6a36c4d00851f56188aee634823eddb48848 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Mon, 13 Mar 2017 14:35:54 -0700 Subject: [PATCH 3/7] Delete Logger class. --- .../src/transformation/file/index.js | 22 +++---- .../src/transformation/file/logger.js | 66 ------------------- .../file/options/option-manager.js | 9 ++- packages/babel-core/src/util.js | 15 +++++ .../src/index.js | 4 +- 5 files changed, 32 insertions(+), 84 deletions(-) delete mode 100644 packages/babel-core/src/transformation/file/logger.js diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js index 6799b2dd2d..88d5be5e84 100644 --- a/packages/babel-core/src/transformation/file/index.js +++ b/packages/babel-core/src/transformation/file/index.js @@ -10,7 +10,6 @@ import sourceMap from "source-map"; import generate from "babel-generator"; import codeFrame from "babel-code-frame"; import traverse from "babel-traverse"; -import Logger from "./logger"; import Store from "../../store"; import { parse } from "babylon"; import * as util from "../../util"; @@ -43,9 +42,7 @@ export default class File extends Store { constructor(opts: Object = {}) { super(); - this.log = new Logger(this, opts.filename || "unknown"); - - opts = this.log.wrap(() => new OptionManager().init(opts)); + opts = new OptionManager().init(opts); let passes = []; if (opts.plugins) passes.push(opts.plugins); @@ -101,7 +98,6 @@ export default class File extends Store { pluginPasses: Array>; parserOpts: BabelParserOptions; - log: Logger; opts: Object; dynamicImportTypes: Object; dynamicImportIds: Object; @@ -368,9 +364,9 @@ export default class File extends Store { } } - this.log.debug("Parse start"); + util.debug(this.opts, "Parse start"); const ast = parseCode(code, parserOpts || this.parserOpts); - this.log.debug("Parse stop"); + util.debug(this.opts, "Parse stop"); return ast; } @@ -388,9 +384,9 @@ export default class File extends Store { } addAst(ast) { - this.log.debug("Start set AST"); + util.debug(this.opts, "Start set AST"); this._addAst(ast); - this.log.debug("End set AST"); + util.debug(this.opts, "End set AST"); } transform(): BabelFileResult { @@ -405,13 +401,13 @@ export default class File extends Store { } this.call("pre", passes); - this.log.debug("Start transform traverse"); + util.debug(this.opts, "Start transform traverse"); // merge all plugin visitors into a single visitor const visitor = traverse.visitors.merge(visitors, passes, this.opts.wrapPluginVisitorMethod); traverse(this.ast, visitor, this.scope); - this.log.debug("End transform traverse"); + util.debug(this.opts, "End transform traverse"); this.call("post", passes); } @@ -552,14 +548,14 @@ export default class File extends Store { } } - this.log.debug("Generation start"); + util.debug(this.opts, "Generation start"); const _result = gen(ast, opts.generatorOpts ? Object.assign(opts, opts.generatorOpts) : opts, this.code); result.code = _result.code; result.map = _result.map; - this.log.debug("Generation end"); + util.debug(this.opts, "Generation end"); if (this.shebang) { // add back shebang diff --git a/packages/babel-core/src/transformation/file/logger.js b/packages/babel-core/src/transformation/file/logger.js deleted file mode 100644 index 6a9503396a..0000000000 --- a/packages/babel-core/src/transformation/file/logger.js +++ /dev/null @@ -1,66 +0,0 @@ -import type File from "./index"; -import buildDebug from "debug"; - -const verboseDebug = buildDebug("babel:verbose"); -const generalDebug = buildDebug("babel"); - -const seenDeprecatedMessages = []; - -export default class Logger { - constructor(file: File, filename: string) { - this.filename = filename; - this.file = file; - } - - filename: string; - file: File; - - _buildMessage(msg: string): string { - let parts = `[BABEL] ${this.filename}`; - if (msg) parts += `: ${msg}`; - return parts; - } - - wrap(callback: () => T): T { - try { - return callback(); - } catch (e) { - e.message = this._buildMessage(e.message); - throw e; - } - } - - warn(msg: string) { - console.warn(this._buildMessage(msg)); - } - - error(msg: string, Constructor: typeof Error = Error): Error { - throw new Constructor(this._buildMessage(msg)); - } - - deprecate(msg: string) { - if (this.file.opts && this.file.opts.suppressDeprecationMessages) return; - - msg = this._buildMessage(msg); - - // already seen this message - if (seenDeprecatedMessages.indexOf(msg) >= 0) return; - - // make sure we don't see it again - seenDeprecatedMessages.push(msg); - - console.error(msg); - } - - verbose(msg: string) { - if (verboseDebug.enabled) verboseDebug(this._buildMessage(msg)); - } - - debug(msg: string) { - if (generalDebug.enabled) generalDebug(this._buildMessage(msg)); - } - - deopt(node: Object, msg: string) { - this.debug(msg); - } -} diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js index 8e1f9cdf7d..0eedbe8345 100644 --- a/packages/babel-core/src/transformation/file/options/option-manager.js +++ b/packages/babel-core/src/transformation/file/options/option-manager.js @@ -373,8 +373,13 @@ export default class OptionManager { } init(opts: Object = {}): Object { - for (const config of buildConfigChain(opts)) { - this.mergeOptions(config); + try { + for (const config of buildConfigChain(opts)) { + this.mergeOptions(config); + } + } catch (e) { + e.message = util.message(opts, e.message); + throw e; } opts = this.options; diff --git a/packages/babel-core/src/util.js b/packages/babel-core/src/util.js index 8d3ba4142e..674f8abc5d 100644 --- a/packages/babel-core/src/util.js +++ b/packages/babel-core/src/util.js @@ -5,9 +5,24 @@ import includes from "lodash/includes"; import isRegExp from "lodash/isRegExp"; import path from "path"; import slash from "slash"; +import buildDebug from "debug"; export { inherits, inspect } from "util"; +const debugBabel = buildDebug("babel"); + +export function debug(opts: Object, msg: string) { + debugBabel(message(opts, msg)); +} + +export function message(opts: Object, msg: string) { + // There are a few case where throws errors will try to annotate themselves multiple times, so + // to keep things simple we just bail out if re-wrapping the message. + if (/^\[BABEL\]/.test(msg)) return msg; + + return `[BABEL] ${opts.filename || "unknown"}: ${msg}`; +} + /** * Test if a filename ends with a compilable extension. */ diff --git a/packages/babel-plugin-transform-react-jsx-source/src/index.js b/packages/babel-plugin-transform-react-jsx-source/src/index.js index 1583598f22..3750d15448 100644 --- a/packages/babel-plugin-transform-react-jsx-source/src/index.js +++ b/packages/babel-plugin-transform-react-jsx-source/src/index.js @@ -45,9 +45,7 @@ export default function ({ types: t }) { } if (!state.fileNameIdentifier) { - const fileName = state.file.log.filename !== "unknown" - ? state.file.log.filename - : null; + const fileName = state.file.opts.filename; const fileNameIdentifier = path.scope.generateUidIdentifier(FILE_NAME_VAR); path.hub.file.scope.push({ id: fileNameIdentifier, init: t.stringLiteral(fileName) }); From 83356abd92b34727c9cd5fd8e465f88f3ac70fbd Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Tue, 14 Mar 2017 11:16:12 -0700 Subject: [PATCH 4/7] Centralize transform API functions. --- packages/babel-core/src/index.js | 69 +++++-------------- .../babel-core/src/transformation/pipeline.js | 47 +++++++++++++ 2 files changed, 64 insertions(+), 52 deletions(-) diff --git a/packages/babel-core/src/index.js b/packages/babel-core/src/index.js index 3e03ec046e..164ccc21a9 100644 --- a/packages/babel-core/src/index.js +++ b/packages/babel-core/src/index.js @@ -1,64 +1,29 @@ -import fs from "fs"; - -export { default as File } from "./transformation/file"; -export { default as buildExternalHelpers } from "./tools/build-external-helpers"; -export { default as template } from "babel-template"; -export { default as resolvePlugin } from "./helpers/resolve-plugin"; -export { default as resolvePreset } from "./helpers/resolve-preset"; +export File from "./transformation/file"; +export buildExternalHelpers from "./tools/build-external-helpers"; +export resolvePlugin from "./helpers/resolve-plugin"; +export resolvePreset from "./helpers/resolve-preset"; export { version } from "../package"; export { getEnv } from "./helpers/environment"; -import * as util from "./util"; -export { util }; +export * as util from "./util"; -import * as messages from "babel-messages"; -export { messages }; +export * as messages from "babel-messages"; +export * as types from "babel-types"; +export traverse from "babel-traverse"; +export template from "babel-template"; -import * as t from "babel-types"; -export { t as types }; - -import traverse from "babel-traverse"; -export { traverse }; - -import OptionManager from "./transformation/file/options/option-manager"; -export { OptionManager }; +export OptionManager from "./transformation/file/options/option-manager"; export function Plugin(alias) { throw new Error(`The (${alias}) Babel 5 plugin is being run with Babel 6.`); } -import { transform, analyse, transformFromAst } from "./transformation/pipeline"; -export { transform, analyse, transformFromAst }; +export { + transform, + analyse, + transformFromAst, + transformFile, + transformFileSync, +} from "./transformation/pipeline"; -export function transformFile(filename: string, opts?: Object, callback: Function) { - if (typeof opts === "function") { - callback = opts; - opts = {}; - } - - opts.filename = filename; - - fs.readFile(filename, function (err, code) { - let result; - - if (!err) { - try { - result = transform(code, opts); - } catch (_err) { - err = _err; - } - } - - if (err) { - callback(err); - } else { - callback(null, result); - } - }); -} - -export function transformFileSync(filename: string, opts?: Object = {}): string { - opts.filename = filename; - return transform(fs.readFileSync(filename, "utf8"), opts); -} diff --git a/packages/babel-core/src/transformation/pipeline.js b/packages/babel-core/src/transformation/pipeline.js index c38edd7312..c50ac6fc99 100644 --- a/packages/babel-core/src/transformation/pipeline.js +++ b/packages/babel-core/src/transformation/pipeline.js @@ -1,4 +1,6 @@ /* global BabelFileResult, BabelFileMetadata */ +import fs from "fs"; + import normalizeAst from "../helpers/normalize-ast"; import Plugin from "./plugin"; import File from "./file"; @@ -31,3 +33,48 @@ export function transformFromAst(ast: Object, code: string, opts: Object): Babel return file.transform(); }); } + +export function transformFile(filename: string, opts?: Object, callback: Function) { + if (typeof opts === "function") { + callback = opts; + opts = {}; + } + + opts.filename = filename; + + fs.readFile(filename, function (err, code) { + let result; + + if (!err) { + try { + const file = new File(opts); + result = file.wrap(code, function () { + file.addCode(code); + file.parseCode(code); + return file.transform(); + }); + } catch (_err) { + err = _err; + } + } + + if (err) { + callback(err); + } else { + callback(null, result); + } + }); +} + +export function transformFileSync(filename: string, opts?: Object = {}): string { + opts.filename = filename; + + const code = fs.readFileSync(filename, "utf8"); + const file = new File(opts); + + return file.wrap(code, function () { + file.addCode(code); + file.parseCode(code); + return file.transform(); + }); +} From 738bd54bfb812ce10af8213aff27425ed727d8a9 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Tue, 14 Mar 2017 11:16:50 -0700 Subject: [PATCH 5/7] Move OptionManager calls out of 'new File'. --- packages/babel-core/src/transformation/file/index.js | 3 --- packages/babel-core/src/transformation/pipeline.js | 7 +++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js index 88d5be5e84..3eddf03235 100644 --- a/packages/babel-core/src/transformation/file/index.js +++ b/packages/babel-core/src/transformation/file/index.js @@ -3,7 +3,6 @@ import getHelper from "babel-helpers"; import * as metadataVisitor from "./metadata"; import convertSourceMap from "convert-source-map"; -import OptionManager from "./options/option-manager"; import PluginPass from "../plugin-pass"; import { NodePath, Hub, Scope } from "babel-traverse"; import sourceMap from "source-map"; @@ -42,8 +41,6 @@ export default class File extends Store { constructor(opts: Object = {}) { super(); - opts = new OptionManager().init(opts); - let passes = []; if (opts.plugins) passes.push(opts.plugins); diff --git a/packages/babel-core/src/transformation/pipeline.js b/packages/babel-core/src/transformation/pipeline.js index c50ac6fc99..367e1efede 100644 --- a/packages/babel-core/src/transformation/pipeline.js +++ b/packages/babel-core/src/transformation/pipeline.js @@ -4,6 +4,7 @@ import fs from "fs"; import normalizeAst from "../helpers/normalize-ast"; import Plugin from "./plugin"; import File from "./file"; +import OptionManager from "./file/options/option-manager"; export function analyse(code: string, opts: Object = {}, visitor?: Object): ?BabelFileMetadata { opts.code = false; @@ -15,6 +16,8 @@ export function analyse(code: string, opts: Object = {}, visitor?: Object): ?Bab } export function transform(code: string, opts?: Object): BabelFileResult { + opts = new OptionManager().init(opts); + const file = new File(opts); return file.wrap(code, function () { file.addCode(code); @@ -24,6 +27,8 @@ export function transform(code: string, opts?: Object): BabelFileResult { } export function transformFromAst(ast: Object, code: string, opts: Object): BabelFileResult { + opts = new OptionManager().init(opts); + ast = normalizeAst(ast); const file = new File(opts); @@ -41,6 +46,7 @@ export function transformFile(filename: string, opts?: Object, callback: Functio } opts.filename = filename; + opts = new OptionManager().init(opts); fs.readFile(filename, function (err, code) { let result; @@ -68,6 +74,7 @@ export function transformFile(filename: string, opts?: Object, callback: Functio export function transformFileSync(filename: string, opts?: Object = {}): string { opts.filename = filename; + opts = new OptionManager().init(opts); const code = fs.readFileSync(filename, "utf8"); const file = new File(opts); From dcb0f91f383513d0e5f67f849b4ecb15eaf81c5c Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Mon, 13 Mar 2017 16:24:06 -0700 Subject: [PATCH 6/7] Ignore files if they don't match only OR they do match ignore. --- packages/babel-core/src/util.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/babel-core/src/util.js b/packages/babel-core/src/util.js index 674f8abc5d..51d42086c0 100644 --- a/packages/babel-core/src/util.js +++ b/packages/babel-core/src/util.js @@ -126,20 +126,22 @@ export function booleanify(val: any): boolean | any { export function shouldIgnore( filename: string, - ignore: Array = [], + ignore: Array, only?: Array, ): boolean { filename = filename.replace(/\\/g, "/"); + if (ignore && ignore.length) { + for (const pattern of ignore) { + if (matchesPattern(pattern, filename)) return true; + } + } + if (only) { for (const pattern of only) { - if (_shouldIgnore(pattern, filename)) return false; + if (matchesPattern(pattern, filename)) return false; } return true; - } else if (ignore.length) { - for (const pattern of ignore) { - if (_shouldIgnore(pattern, filename)) return true; - } } return false; @@ -150,7 +152,7 @@ export function shouldIgnore( * Otherwise returns result of matching pattern Regex with filename. */ -function _shouldIgnore(pattern: Function | RegExp, filename: string) { +function matchesPattern(pattern: Function | RegExp, filename: string) { if (typeof pattern === "function") { return pattern(filename); } else { From bf4664b4305d8163a9bef6b37152432151989269 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Mon, 13 Mar 2017 17:11:35 -0700 Subject: [PATCH 7/7] Invert the resolution order of config-chain to process higher-priority items first. --- .../file/options/build-config-chain.js | 70 ++++---- packages/babel-core/test/config-chain.js | 160 +++++++++--------- 2 files changed, 114 insertions(+), 116 deletions(-) diff --git a/packages/babel-core/src/transformation/file/options/build-config-chain.js b/packages/babel-core/src/transformation/file/options/build-config-chain.js index ce754d6d64..7854403a7f 100644 --- a/packages/babel-core/src/transformation/file/options/build-config-chain.js +++ b/packages/babel-core/src/transformation/file/options/build-config-chain.js @@ -25,18 +25,18 @@ export default function buildConfigChain(opts: Object = {}) { const filename = opts.filename; const builder = new ConfigChainBuilder(); - // resolve all .babelrc files - if (opts.babelrc !== false) { - builder.findConfigs(filename); - } - builder.mergeConfig({ options: opts, alias: "base", dirname: filename && path.dirname(filename), }); - return builder.configs; + // resolve all .babelrc files + if (opts.babelrc !== false) { + builder.findConfigs(filename); + } + + return builder.configs.reverse(); } class ConfigChainBuilder { @@ -61,6 +61,14 @@ class ConfigChainBuilder { let foundIgnore = false; while (loc !== (loc = path.dirname(loc))) { + if (!foundIgnore) { + const ignoreLoc = path.join(loc, BABELIGNORE_FILENAME); + if (exists(ignoreLoc)) { + this.addIgnoreConfig(ignoreLoc); + foundIgnore = true; + } + } + if (!foundConfig) { const configLoc = path.join(loc, BABELRC_FILENAME); const configJSLoc = path.join(loc, BABELRC_JS_FILENAME); @@ -85,14 +93,6 @@ class ConfigChainBuilder { foundConfig = !!foundConfigs.length; } - if (!foundIgnore) { - const ignoreLoc = path.join(loc, BABELIGNORE_FILENAME); - if (exists(ignoreLoc)) { - this.addIgnoreConfig(ignoreLoc); - foundIgnore = true; - } - } - if (foundIgnore && foundConfig) return; } } @@ -176,6 +176,26 @@ class ConfigChainBuilder { dirname = dirname || process.cwd(); loc = loc || alias; + // env + const envKey = babel.getEnv(); + if (options.env) { + const envOpts = options.env[envKey]; + delete options.env; + + this.mergeConfig({ + options: envOpts, + alias: `${alias}.env.${envKey}`, + dirname: dirname, + }); + } + + this.configs.push({ + options, + alias, + loc, + dirname, + }); + // add extends clause if (options.extends) { const extendsLoc = resolve(options.extends, dirname); @@ -186,28 +206,6 @@ class ConfigChainBuilder { } delete options.extends; } - - this.configs.push({ - options, - alias, - loc, - dirname, - }); - - // env - let envOpts; - - const envKey = babel.getEnv(); - if (options.env) { - envOpts = options.env[envKey]; - delete options.env; - } - - this.mergeConfig({ - options: envOpts, - alias: `${alias}.env.${envKey}`, - dirname: dirname, - }); } } diff --git a/packages/babel-core/test/config-chain.js b/packages/babel-core/test/config-chain.js index f317eca7d8..4a98130c66 100644 --- a/packages/babel-core/test/config-chain.js +++ b/packages/babel-core/test/config-chain.js @@ -82,16 +82,6 @@ describe("buildConfigChain", function () { }); const expected = [ - { - options: { - plugins: [ - "dir2", - ], - }, - alias: fixture("dir2", ".babelrc"), - loc: fixture("dir2", ".babelrc"), - dirname: fixture("dir2"), - }, { options: { ignore: [ @@ -102,6 +92,16 @@ describe("buildConfigChain", function () { loc: fixture(".babelignore"), dirname: fixture(), }, + { + options: { + plugins: [ + "dir2", + ], + }, + alias: fixture("dir2", ".babelrc"), + loc: fixture("dir2", ".babelrc"), + dirname: fixture("dir2"), + }, { options: { filename: fixture("dir2", "src.js"), @@ -121,16 +121,6 @@ describe("buildConfigChain", function () { }); const expected = [ - { - options: { - plugins: [ - "env-base", - ], - }, - alias: fixture("env", ".babelrc"), - loc: fixture("env", ".babelrc"), - dirname: fixture("env"), - }, { options: { ignore: [ @@ -141,6 +131,16 @@ describe("buildConfigChain", function () { loc: fixture(".babelignore"), dirname: fixture(), }, + { + options: { + plugins: [ + "env-base", + ], + }, + alias: fixture("env", ".babelrc"), + loc: fixture("env", ".babelrc"), + dirname: fixture("env"), + }, { options: { filename: fixture("env", "src.js"), @@ -162,6 +162,16 @@ describe("buildConfigChain", function () { }); const expected = [ + { + options: { + ignore: [ + "root-ignore", + ], + }, + alias: fixture(".babelignore"), + loc: fixture(".babelignore"), + dirname: fixture(), + }, { options: { plugins: [ @@ -182,16 +192,6 @@ describe("buildConfigChain", function () { loc: fixture("env", ".babelrc.env.foo"), dirname: fixture("env"), }, - { - options: { - ignore: [ - "root-ignore", - ], - }, - alias: fixture(".babelignore"), - loc: fixture(".babelignore"), - dirname: fixture(), - }, { options: { filename: fixture("env", "src.js"), @@ -214,6 +214,16 @@ describe("buildConfigChain", function () { }); const expected = [ + { + options: { + ignore: [ + "root-ignore", + ], + }, + alias: fixture(".babelignore"), + loc: fixture(".babelignore"), + dirname: fixture(), + }, { options: { plugins: [ @@ -234,16 +244,6 @@ describe("buildConfigChain", function () { loc: fixture("env", ".babelrc.env.bar"), dirname: fixture("env"), }, - { - options: { - ignore: [ - "root-ignore", - ], - }, - alias: fixture(".babelignore"), - loc: fixture(".babelignore"), - dirname: fixture(), - }, { options: { filename: fixture("env", "src.js"), @@ -301,6 +301,16 @@ describe("buildConfigChain", function () { }); const expected = [ + { + options: { + ignore: [ + "root-ignore", + ], + }, + alias: fixture(".babelignore"), + loc: fixture(".babelignore"), + dirname: fixture(), + }, { options: { plugins: [ @@ -312,16 +322,6 @@ describe("buildConfigChain", function () { loc: fixture("js-config", ".babelrc.js"), dirname: fixture("js-config"), }, - { - options: { - ignore: [ - "root-ignore", - ], - }, - alias: fixture(".babelignore"), - loc: fixture(".babelignore"), - dirname: fixture(), - }, { options: { filename: fixture("js-config", "src.js"), @@ -341,6 +341,16 @@ describe("buildConfigChain", function () { }); const expected = [ + { + options: { + ignore: [ + "root-ignore", + ], + }, + alias: fixture(".babelignore"), + loc: fixture(".babelignore"), + dirname: fixture(), + }, { options: { plugins: [ @@ -352,16 +362,6 @@ describe("buildConfigChain", function () { loc: fixture("js-config-default", ".babelrc.js"), dirname: fixture("js-config-default"), }, - { - options: { - ignore: [ - "root-ignore", - ], - }, - alias: fixture(".babelignore"), - loc: fixture(".babelignore"), - dirname: fixture(), - }, { options: { filename: fixture("js-config-default", "src.js"), @@ -380,6 +380,16 @@ describe("buildConfigChain", function () { }); const expected = [ + { + options: { + ignore: [ + "root-ignore", + ], + }, + alias: fixture(".babelignore"), + loc: fixture(".babelignore"), + dirname: fixture(), + }, { options: { plugins: [ @@ -401,16 +411,6 @@ describe("buildConfigChain", function () { loc: fixture("js-config-extended", ".babelrc.js"), dirname: fixture("js-config-extended"), }, - { - options: { - ignore: [ - "root-ignore", - ], - }, - alias: fixture(".babelignore"), - loc: fixture(".babelignore"), - dirname: fixture(), - }, { options: { filename: fixture("js-config-extended", "src.js"), @@ -431,16 +431,6 @@ describe("buildConfigChain", function () { }); const expected = [ - { - options: { - plugins: [ - "json", - ], - }, - alias: fixture("json-pkg-config-no-babel", ".babelrc"), - loc: fixture("json-pkg-config-no-babel", ".babelrc"), - dirname: fixture("json-pkg-config-no-babel"), - }, { options: { ignore: [ @@ -451,6 +441,16 @@ describe("buildConfigChain", function () { loc: fixture(".babelignore"), dirname: fixture(), }, + { + options: { + plugins: [ + "json", + ], + }, + alias: fixture("json-pkg-config-no-babel", ".babelrc"), + loc: fixture("json-pkg-config-no-babel", ".babelrc"), + dirname: fixture("json-pkg-config-no-babel"), + }, { options: { filename: fixture("json-pkg-config-no-babel", "src.js"),