From 51d008c080e66a3a1de80d96eb07df6d50932d71 Mon Sep 17 00:00:00 2001 From: Bradford Lemley Date: Sun, 3 Feb 2019 11:03:28 -0700 Subject: [PATCH] Configure babel cwd to be project rootDir --- babel.config.js | 1 - e2e/global-setup/projects.jest.config.js | 6 ++++++ e2e/global-setup/transform.js | 8 ++++++++ e2e/multi-project-babel/bar/.babelrc.js | 1 + e2e/multi-project-babel/bar/bar.js | 1 + e2e/multi-project-babel/foo/.babelrc.js | 1 + e2e/multi-project-babel/foo/foo.js | 1 + packages/babel-jest/src/index.js | 6 ++++-- .../src/__tests__/test_root/.babelrc.js | 16 ++++++++++++++++ 9 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 e2e/global-setup/transform.js create mode 100644 packages/jest-runtime/src/__tests__/test_root/.babelrc.js diff --git a/babel.config.js b/babel.config.js index cc4688972601..16388b188c62 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,7 +1,6 @@ // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. module.exports = { - babelrcRoots: ['examples/*'], plugins: [ ['@babel/plugin-transform-modules-commonjs', {allowTopLevelThis: true}], '@babel/plugin-transform-strict-mode', diff --git a/e2e/global-setup/projects.jest.config.js b/e2e/global-setup/projects.jest.config.js index 9d008ac5cd06..1450d744a29d 100644 --- a/e2e/global-setup/projects.jest.config.js +++ b/e2e/global-setup/projects.jest.config.js @@ -15,6 +15,9 @@ module.exports = { globalSetup: '/setup.js', rootDir: path.resolve(__dirname, './project-1'), testMatch: ['/**/*.test.js'], + transform: { + '\\.js$': require.resolve('./transform'), + }, transformIgnorePatterns: ['/node_modules/', '/packages/'], }, { @@ -22,6 +25,9 @@ module.exports = { globalSetup: '/setup.js', rootDir: path.resolve(__dirname, './project-2'), testMatch: ['/**/*.test.js'], + transform: { + '\\.js$': require.resolve('./transform'), + }, transformIgnorePatterns: ['/node_modules/', '/packages/'], }, ], diff --git a/e2e/global-setup/transform.js b/e2e/global-setup/transform.js new file mode 100644 index 000000000000..67dc5b37708d --- /dev/null +++ b/e2e/global-setup/transform.js @@ -0,0 +1,8 @@ +// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. +const babelJest = require('babel-jest'); + +/* use higher-level babel.config.js */ + +module.exports = babelJest.createTransformer({ + rootMode: 'upward', +}); diff --git a/e2e/multi-project-babel/bar/.babelrc.js b/e2e/multi-project-babel/bar/.babelrc.js index 6869642766b4..eef9b61187fb 100644 --- a/e2e/multi-project-babel/bar/.babelrc.js +++ b/e2e/multi-project-babel/bar/.babelrc.js @@ -1,3 +1,4 @@ +// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. module.exports = { presets: ['@babel/preset-flow'], }; diff --git a/e2e/multi-project-babel/bar/bar.js b/e2e/multi-project-babel/bar/bar.js index 851a12a0a77c..7e9de98e4811 100644 --- a/e2e/multi-project-babel/bar/bar.js +++ b/e2e/multi-project-babel/bar/bar.js @@ -1 +1,2 @@ +// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. module.exports = (text: string) => text; diff --git a/e2e/multi-project-babel/foo/.babelrc.js b/e2e/multi-project-babel/foo/.babelrc.js index 6869642766b4..eef9b61187fb 100644 --- a/e2e/multi-project-babel/foo/.babelrc.js +++ b/e2e/multi-project-babel/foo/.babelrc.js @@ -1,3 +1,4 @@ +// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. module.exports = { presets: ['@babel/preset-flow'], }; diff --git a/e2e/multi-project-babel/foo/foo.js b/e2e/multi-project-babel/foo/foo.js index 851a12a0a77c..7e9de98e4811 100644 --- a/e2e/multi-project-babel/foo/foo.js +++ b/e2e/multi-project-babel/foo/foo.js @@ -1 +1,2 @@ +// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. module.exports = (text: string) => text; diff --git a/packages/babel-jest/src/index.js b/packages/babel-jest/src/index.js index bae5553dbe6c..9065741cca07 100644 --- a/packages/babel-jest/src/index.js +++ b/packages/babel-jest/src/index.js @@ -52,7 +52,7 @@ const createTransformer = (options: any): Transformer => { configString: string, {config, instrument, rootDir}: {config: ProjectConfig} & CacheKeyOptions, ): string { - const babelOptions = loadBabelConfig(config.cwd, filename); + const babelOptions = loadBabelConfig(config.rootDir, filename); const configPath = [ babelOptions.config || '', babelOptions.babelrc || '', @@ -85,7 +85,9 @@ const createTransformer = (options: any): Transformer => { config: ProjectConfig, transformOptions?: TransformOptions, ): string | TransformedSource { - const babelOptions = {...loadBabelConfig(config.cwd, filename).options}; + const babelOptions = { + ...loadBabelConfig(config.rootDir, filename).options, + }; if (transformOptions && transformOptions.instrument) { babelOptions.auxiliaryCommentBefore = ' istanbul ignore next '; diff --git a/packages/jest-runtime/src/__tests__/test_root/.babelrc.js b/packages/jest-runtime/src/__tests__/test_root/.babelrc.js new file mode 100644 index 000000000000..995e9041c1f7 --- /dev/null +++ b/packages/jest-runtime/src/__tests__/test_root/.babelrc.js @@ -0,0 +1,16 @@ +module.exports = { + plugins: [ + ['@babel/plugin-transform-modules-commonjs', {allowTopLevelThis: true}], + '@babel/plugin-transform-strict-mode', + ], + presets: [ + [ + '@babel/preset-env', + { + shippedProposals: true, + targets: {node: 6}, + }, + ], + '@babel/preset-flow', + ], +};