我有一个使用nodejs 11,babel 7和jest(babel-node和babel-jest)设置的项目。 我们将测试文件放在js文件旁边, 对于file.js,将有一个测试文件file.test.js。 问题是babel每次都会编译所有文件。 当测试文件不在测试上下文中编译时(在没有运行jest的情况下),babel尝试编译.test.js文件,并且由于jest特定的导入不存在而失败,例如jest.fn(),仅当运行jest,我无法导入此依赖项,因为其中的一些依赖项像jest-next一样在其他模块中流传下来。
我试图设置babel以忽略test.js文件,但是无论我做什么,babel都会尝试编译它们。
这是我的babel设置:
module.exports = (api) => {
api.cache(false);
const presets = [
[
'@babel/preset-env', {
targets: {
node: 'current'
}
}
]
];
const plugins = [
[ '@babel/plugin-proposal-decorators', { 'legacy': true } ],
[ '@babel/plugin-proposal-class-properties', { loose: true } ],
[ 'module-resolver', {
'root': [ './src' ],
'alias': {
'@': './src',
'Common': './src/Common'
}
} ]
];
let test = [];
let ignore = [];
let exclude = [];
if ([ 'dev', 'build' ].includes(process.env.BABEL_ENV)) {
test.push(
/^((?!(\\.test\\.))[\\s\\S])*\\.(js|ts)$/
);
} else if ([ 'test' ].includes(process.env.BABEL_ENV)) {
plugins.push(
'@babel/plugin-transform-runtime'
);
test.push('**/*.test.js');
}
return {
presets,
plugins,
test,
ignore,
exclude
};
};
有没有一种方法可以设置babel而不编译test.js文件,而仍然将它们放在源文件旁边?