我有一个项目,我用react-create-app启动,然后退出,我已经开始写测试了,因为我用的是最新的节点,所以我不需要运行很多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中提供的默认值。
1条答案
按热度按时间hmtdttj41#
要在运行jest时禁用某些babel转换,您可以在.babelrc文件的“env”部分指定转换。在您的情况下,您可以按如下方式更新.babelrc文件:
然后,在package.json中,确保在运行测试时将BABEL_ENV变量设置为“test”:
这应该会在运行jest时禁用指定的babel转换。