mirror of
https://github.com/zhigang1992/create-react-app.git
synced 2026-01-12 22:46:30 +08:00
Let Jest handle all file types (#1197)
* Let Jest handle all file types * Update regexes * Fix exclusion regex to also exclude files without extension * Be over-cautious with Windows paths because I'm not sure how Jest handles them * There is no automatic babel-jest discovery now that we use transsform
This commit is contained in:
@@ -5,9 +5,18 @@
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @flow
|
||||
*/
|
||||
// @remove-on-eject-end
|
||||
|
||||
module.exports = "test-file-stub";
|
||||
// This is a custom Jest transformer turning style imports into empty objects.
|
||||
// http://facebook.github.io/jest/docs/tutorial-webpack.html
|
||||
|
||||
module.exports = {
|
||||
process() {
|
||||
return 'module.exports = {};';
|
||||
},
|
||||
getCacheKey(fileData, filename) {
|
||||
// The output is always the same.
|
||||
return 'cssTransform';
|
||||
},
|
||||
};
|
||||
@@ -5,9 +5,16 @@
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @flow
|
||||
*/
|
||||
// @remove-on-eject-end
|
||||
|
||||
module.exports = {};
|
||||
const path = require('path');
|
||||
|
||||
// This is a custom Jest transformer turning file imports into filenames.
|
||||
// http://facebook.github.io/jest/docs/tutorial-webpack.html
|
||||
|
||||
module.exports = {
|
||||
process(src, filename) {
|
||||
return 'module.exports = ' + JSON.stringify(path.basename(filename)) + ';';
|
||||
},
|
||||
};
|
||||
4
packages/react-scripts/scripts/eject.js
vendored
4
packages/react-scripts/scripts/eject.js
vendored
@@ -56,8 +56,8 @@ prompt(
|
||||
path.join('config', 'polyfills.js'),
|
||||
path.join('config', 'webpack.config.dev.js'),
|
||||
path.join('config', 'webpack.config.prod.js'),
|
||||
path.join('config', 'jest', 'CSSStub.js'),
|
||||
path.join('config', 'jest', 'FileStub.js'),
|
||||
path.join('config', 'jest', 'cssTransform.js'),
|
||||
path.join('config', 'jest', 'fileTransform.js'),
|
||||
path.join('scripts', 'build.js'),
|
||||
path.join('scripts', 'start.js'),
|
||||
path.join('scripts', 'test.js')
|
||||
|
||||
27
packages/react-scripts/utils/createJestConfig.js
vendored
27
packages/react-scripts/utils/createJestConfig.js
vendored
@@ -17,27 +17,30 @@ module.exports = (resolve, rootDir, isEjecting) => {
|
||||
// an absolute filename into configuration after ejecting.
|
||||
const setupTestsFile = pathExists.sync(paths.testsSetup) ? '<rootDir>/src/setupTests.js' : undefined;
|
||||
|
||||
// TODO: I don't know if it's safe or not to just use / as path separator
|
||||
// in Jest configs. We need help from somebody with Windows to determine this.
|
||||
const config = {
|
||||
collectCoverageFrom: ['src/**/*.{js,jsx}'],
|
||||
moduleNameMapper: {
|
||||
'^.+\\.(ico|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': resolve('config/jest/FileStub.js'),
|
||||
'^.+\\.css$': resolve('config/jest/CSSStub.js')
|
||||
},
|
||||
setupFiles: [resolve('config/polyfills.js')],
|
||||
setupTestFrameworkScriptFile: setupTestsFile,
|
||||
testPathIgnorePatterns: ['<rootDir>/(build|docs|node_modules)/'],
|
||||
testPathIgnorePatterns: [
|
||||
'<rootDir>[/\\\\](build|docs|node_modules)[/\\\\]'
|
||||
],
|
||||
testEnvironment: 'node',
|
||||
testURL: 'http://localhost',
|
||||
transform: {
|
||||
'^.+\\.(js|jsx)$': isEjecting ?
|
||||
'<rootDir>/node_modules/babel-jest'
|
||||
: resolve('config/jest/babelTransform.js'),
|
||||
'^.+\\.css$': resolve('config/jest/cssTransform.js'),
|
||||
'^(?!.*\\.(js|jsx|css|json)$)': resolve('config/jest/fileTransform.js'),
|
||||
},
|
||||
transformIgnorePatterns: [
|
||||
'[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$'
|
||||
],
|
||||
};
|
||||
if (rootDir) {
|
||||
config.rootDir = rootDir;
|
||||
}
|
||||
if (!isEjecting) {
|
||||
// This is unnecessary after ejecting because Jest
|
||||
// will just use .babelrc in the project folder.
|
||||
config.transform = {
|
||||
'^.+\\.(js|jsx)$': resolve('config/jest/transform.js'),
|
||||
};
|
||||
}
|
||||
return config;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user