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 0c847f8672..f9b43e3a6b 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 @@ -95,7 +95,8 @@ class ConfigChainBuilder { if (lines.length) { this.mergeConfig({ options: { ignore: lines }, - loc + alias: loc, + dirname: path.dirname(loc) }); } } diff --git a/packages/babel-core/test/config-chain.js b/packages/babel-core/test/config-chain.js new file mode 100644 index 0000000000..7c85714f82 --- /dev/null +++ b/packages/babel-core/test/config-chain.js @@ -0,0 +1,101 @@ +var assert = require("assert"); +var path = require("path"); +var buildConfigChain = require("../lib/transformation/file/options/build-config-chain"); + +function fixture() { + var args = [__dirname, "fixtures", "config"]; + for (var i = 0; i < arguments.length; i ++) { + args.push(arguments[i]); + } + return path.join.apply(path, args); +} + +suite("evaluation", function () { + test("dir1", function () { + var chain = buildConfigChain({ + filename: fixture("dir1", "src.js") + }); + + var expected = [ + { + options: { + plugins: [ + "extended" + ] + }, + alias: fixture("extended.babelrc.json"), + loc: fixture("extended.babelrc.json"), + dirname: fixture() + }, + { + options: { + plugins: [ + "root" + ] + }, + alias: fixture(".babelrc"), + loc: fixture(".babelrc"), + dirname: fixture() + }, + { + options: { + ignore: [ + "root-ignore" + ] + }, + alias: fixture(".babelignore"), + loc: fixture(".babelignore"), + dirname: fixture() + }, + { + options: { + filename: fixture("dir1", "src.js") + }, + alias: "base", + loc: "base", + dirname: fixture("dir1") + } + ]; + + assert.deepEqual(chain, expected); + }); + + test("dir2", function () { + var chain = buildConfigChain({ + filename: fixture("dir2", "src.js") + }); + + var expected = [ + { + options: { + plugins: [ + "dir2" + ] + }, + alias: fixture("dir2", ".babelrc"), + loc: fixture("dir2", ".babelrc"), + dirname: fixture("dir2") + }, + { + options: { + ignore: [ + "root-ignore" + ] + }, + alias: fixture(".babelignore"), + loc: fixture(".babelignore"), + dirname: fixture() + }, + { + options: { + filename: fixture("dir2", "src.js") + }, + alias: "base", + loc: "base", + dirname: fixture("dir2") + } + ]; + + assert.deepEqual(chain, expected); + }); +}); diff --git a/packages/babel-core/test/fixtures/config/.babelignore b/packages/babel-core/test/fixtures/config/.babelignore new file mode 100644 index 0000000000..054b9bf2d3 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/.babelignore @@ -0,0 +1 @@ +root-ignore diff --git a/packages/babel-core/test/fixtures/config/.babelrc b/packages/babel-core/test/fixtures/config/.babelrc new file mode 100644 index 0000000000..3dc5d1fa19 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/.babelrc @@ -0,0 +1,4 @@ +{ + "plugins": ["root"], + "extends": "./extended.babelrc.json" +} diff --git a/packages/babel-core/test/fixtures/config/dir1/src.js b/packages/babel-core/test/fixtures/config/dir1/src.js new file mode 100644 index 0000000000..8b1a393741 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/dir1/src.js @@ -0,0 +1 @@ +// empty diff --git a/packages/babel-core/test/fixtures/config/dir2/.babelrc b/packages/babel-core/test/fixtures/config/dir2/.babelrc new file mode 100644 index 0000000000..bb094e669b --- /dev/null +++ b/packages/babel-core/test/fixtures/config/dir2/.babelrc @@ -0,0 +1,5 @@ +{ + "plugins": [ + "dir2" + ] +} diff --git a/packages/babel-core/test/fixtures/config/dir2/src.js b/packages/babel-core/test/fixtures/config/dir2/src.js new file mode 100644 index 0000000000..8b1a393741 --- /dev/null +++ b/packages/babel-core/test/fixtures/config/dir2/src.js @@ -0,0 +1 @@ +// empty diff --git a/packages/babel-core/test/fixtures/config/extended.babelrc.json b/packages/babel-core/test/fixtures/config/extended.babelrc.json new file mode 100644 index 0000000000..6996c6d74e --- /dev/null +++ b/packages/babel-core/test/fixtures/config/extended.babelrc.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + "extended" + ] +}