我正在尝试使用测试设置React模块。我正在使用汇总来编译所有内容,这很好。但我也试图引入测试。
我的目录结构:
dist/
|- index.js
src/
|- .babelrc
|- util.js
test/
|- .babelrc
|- util.test.js
rollup.config.js
到目前为止,这么好。我在src中有.babelrc
适用于我的源文件:
{
"presets": [
["es2015", { "modules": false }],
["env", { "modules": false }],
"react"
],
"plugins": ["external-helpers"]
}
和一个单独的Jest测试,没有Rollup要求的例外:
{
"presets": ["es2015", "env", "react"]
}
不幸的是,我在运行测试时遇到错误,抱怨他们在源文件(SyntaxError: Unexpected token export
)中运行的第一个es6功能。如果我删除模块异常,则测试通过,但Rollup失败。
如何让babel为Rollup应用模块例外,但不适用于Jest?或者我应该采用完全不同的方式来配置它们?
答案 0 :(得分:2)
我已经设法解决了这个问题,但我不喜欢它,并且会喜欢更透明的解决方案。
我的test/.babelrc
(没有模块例外)现在位于项目的根级别。
在我的rollup.config.js
中,我设置rollup-plugin-babel
以忽略babelrc,并为其提供src/.babelrc
中的选项:
babel({
babelrc: false,
presets: [
['es2015', { modules: false }],
['env', { modules: false }],
'react',
],
plugins: ['external-helpers'],
exclude: 'node_modules/**',
}),
这似乎有效,但在根级别.babelrc
实际上没有用于编译程序包,这似乎是后来混淆的一个秘诀。当然有更好的方法吗?