【问题标题】:How do I get Jest to run tests against a rollup+babel build?如何让 Jest 针对 rollup+babel 构建运行测试?
【发布时间】:2017-07-26 12:37:10
【问题描述】:

我正在尝试设置一个带有测试的 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?或者我应该以完全不同的方式来配置这些?

【问题讨论】:

标签: babeljs jestjs rollupjs babel-jest


【解决方案1】:

我已经设法解决了这个问题,但我不喜欢它,希望有一个更透明的解决方案。

我的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 并没有实际用于编译包,这似乎是后来混淆的秘诀。肯定有更好的方法吗?

【讨论】:

    【解决方案2】:

    我最近遇到了类似的问题(虽然我没有使用 React),并且将我的 .babelrc 文件放在 src/ 中产生了同样的错误。

    我现在在我的项目中使用this configuration。自述文件包含解释。

    关键特性是我在 rollup.config.js 中指定了 babel 配置,并且我包含了选项 babelrc: false

    我在运行测试时不再收到错误消息,并且一切正常。这听起来合理吗?

    import resolve from "rollup-plugin-node-resolve";
    import babel from "rollup-plugin-babel";
    
    export default {
      input: "src/index.js",
      output: [
        {
          file: "build/index.cjs.js",
          format: "cjs"
        },
        {
          file: "build/index.es.js",
          format: "es"
        }
      ],
      plugins: [
        resolve(),
        babel({
          presets: [
            [
              "env",
              {
                modules: false
              }
            ]
          ],
          plugins: ["external-helpers"],
          babelrc: false
        })
      ]
    };
    

    【讨论】:

      猜你喜欢
      • 2020-09-22
      • 1970-01-01
      • 2020-03-11
      • 2018-08-21
      • 2019-07-07
      • 2019-02-15
      • 2020-10-07
      • 2020-06-14
      • 1970-01-01
      相关资源
      最近更新 更多