我有一个用react-create-app开始但后来弃用的项目,并且我已经开始编写测试。由于我使用了最新的node,所以在进行测试时不需要运行许多babel转换(这样可以简化回溯),但是我无法弄清楚如何停止babel在运行测试时转换我的代码。
在我的package.json中:
{
"scripts": {
"test": "BABEL_ENV=test node --harmony scripts/test.js --env=jsdom"
},
"jest": {
"moduleFileExtensions": [
"jsx",
"js",
"json"
],
"moduleNameMapper": {
"^.+\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/config/jest/FileStub.js",
"^.+\\.css$": "<rootDir>/config/jest/CSSStub.js"
},
"setupFiles": [
"<rootDir>/config/polyfills.js"
],
"testPathIgnorePatterns": [
"<rootDir>/(build|docs|node_modules|scripts)/"
],
"testEnvironment": "node"
}
}
我的 .babelrc 文件看起来像这样:
{
"presets": [
["es2015", { "modules": false }],
"react-app"
],
"plugins": [
["transform-class-properties", { "spec": true }],
["transform-flow-strip-types"]
],
"env": {
"test": {
"presets": [
"node7",
"react-app"
],
"plugins": [
["transform-class-properties", { "spec": true }],
["transform-flow-strip-types"]
]
}
}
}
稍微修改后的test.js文件如下:
process.env.NODE_ENV = 'test';
process.env.BABEL_ENV = 'test';
process.env.PUBLIC_URL = '';
require('dotenv').config({ silent: true });
const jest = require('jest');
const argv = process.argv.slice(2);
if (!process.env.CI) {
argv.push('--watch');
}
jest.run(argv);
我认为我对babelrc文件中的"env"部分的工作原理有所误解,但我认为设置BABEL_ENV
变量会覆盖.babelrc中提供的默认值。我错在哪里了?
transform
,将其设置为空对象{}
?默认情况下它使用babel-jest
。 - morganney