From 589a7c0d9ae94f091ca1b5ec2a4e330419d7846f Mon Sep 17 00:00:00 2001 From: CJ Buchmann Date: Sun, 26 Feb 2017 20:08:26 -0800 Subject: [PATCH 1/2] Add overrideConfig cli option for the react-scripts test script The jest config is inaccessible to users. While it adds great defaults, it would be nice for users to specify their own configuration options on top of the existing app provided defaults. This branch enables that ability. --- packages/react-scripts/scripts/test.js | 12 +++++++++++- packages/react-scripts/template/README.md | 3 +++ packages/react-scripts/utils/createJestConfig.js | 9 ++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/react-scripts/scripts/test.js b/packages/react-scripts/scripts/test.js index 9de5181d739..c1719c9bd54 100644 --- a/packages/react-scripts/scripts/test.js +++ b/packages/react-scripts/scripts/test.js @@ -20,6 +20,7 @@ require('dotenv').config({silent: true}); const jest = require('jest'); const argv = process.argv.slice(2); +const overrideArg = (process.argv.filter((i) => i.match('--overrideConfig')) || [])[0]; // Watch unless on CI or in coverage mode if (!process.env.CI && argv.indexOf('--coverage') < 0) { @@ -31,10 +32,19 @@ if (!process.env.CI && argv.indexOf('--coverage') < 0) { const createJestConfig = require('../utils/createJestConfig'); const path = require('path'); const paths = require('../config/paths'); + +let overrideConfig; +if ( overrideArg ) { + const parts = overrideArg.split('='); + overrideConfig = require(path.resolve(paths.appSrc, '..', parts[1])); + console.log('config is', overrideConfig.transformIgnorePatterns); +} + argv.push('--config', JSON.stringify(createJestConfig( relativePath => path.resolve(__dirname, '..', relativePath), path.resolve(paths.appSrc, '..'), - false + false, + overrideConfig ))); // @remove-on-eject-end jest.run(argv); diff --git a/packages/react-scripts/template/README.md b/packages/react-scripts/template/README.md index e290b935625..f921b1b8936 100644 --- a/packages/react-scripts/template/README.md +++ b/packages/react-scripts/template/README.md @@ -156,6 +156,9 @@ You will also see any lint errors in the console. Launches the test runner in the interactive watch mode.
See the section about [running tests](#running-tests) for more information. +You can add your own test configuration by specifying a json file using '--overrideConfig'. +This will also override existing react-scripts configuration. + ### `npm run build` Builds the app for production to the `build` folder.
diff --git a/packages/react-scripts/utils/createJestConfig.js b/packages/react-scripts/utils/createJestConfig.js index f1c67c018f1..c9572b154a4 100644 --- a/packages/react-scripts/utils/createJestConfig.js +++ b/packages/react-scripts/utils/createJestConfig.js @@ -12,7 +12,7 @@ const fs = require('fs'); const paths = require('../config/paths'); -module.exports = (resolve, rootDir, isEjecting) => { +module.exports = (resolve, rootDir, isEjecting, overrides) => { // Use this instead of `paths.testsSetup` to avoid putting // an absolute filename into configuration after ejecting. const setupTestsFile = fs.existsSync(paths.testsSetup) ? '/src/setupTests.js' : undefined; @@ -45,5 +45,12 @@ module.exports = (resolve, rootDir, isEjecting) => { if (rootDir) { config.rootDir = rootDir; } + + if( overrides ) { + Object.keys(overrides).forEach((k) => { + config[k] = overrides[k]; + }); + } + return config; }; From 84787bf2a7518bf0aeb9d2a312418bf6340e9fbe Mon Sep 17 00:00:00 2001 From: CJ Buchmann Date: Sun, 26 Feb 2017 22:24:17 -0800 Subject: [PATCH 2/2] cleanup override set logic. swap const to var type --- packages/react-scripts/scripts/test.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/react-scripts/scripts/test.js b/packages/react-scripts/scripts/test.js index c1719c9bd54..40ec6dcd64f 100644 --- a/packages/react-scripts/scripts/test.js +++ b/packages/react-scripts/scripts/test.js @@ -33,11 +33,9 @@ const createJestConfig = require('../utils/createJestConfig'); const path = require('path'); const paths = require('../config/paths'); -let overrideConfig; +var overrideConfig; if ( overrideArg ) { - const parts = overrideArg.split('='); - overrideConfig = require(path.resolve(paths.appSrc, '..', parts[1])); - console.log('config is', overrideConfig.transformIgnorePatterns); + overrideConfig = require(path.resolve(paths.appSrc, '..', overrideArg.split('=')[1] )); } argv.push('--config', JSON.stringify(createJestConfig(