javascript - Jest 'projects' 配置不读取子文件夹中的 .babelrc 和 webpack.config.json

标签 javascript webpack jestjs babel-jest

我需要一些帮助在单声道存储库中使用 babel 配置 jest,

我的项目布局如下:

src/some/path/packages
                      /jest.config.js
                      /a/src/jest.config.js
                      /a/src/.babelrc
                      /a/src/webpack.config.js
                      /b/src/jest.config.js
                      /b/src/webpack.config.js

和我的根 jest.config.js:

module.exports = {
    projects: ["./a/src/jest.config.js", "/b/src/jest.config.js"]
};

a/src/jest.config.js:

module.exports = {
    resolver: "jest-webpack-resolver"
};

如你所见,我正在使用 webpack 解析器,因为我的 webpack.config.js 文件中有别名

如果我在 ./a/src 中调用 jest 它会完美地工作 但如果我在包中调用它

  • 无法解析模块和
  • ES6 导入不工作,我得到 SyntaxError(显然找不到 .babelrc)

我想避免安装 babel/jest/ 应用程序中的 webpack,我不知道如何开 Jest 正确的 .babelrc 文件

我还尝试将 packages/中的 jest.config.js 更改为:

module.exports = {
    projects: [{
        rootDir: "<rootDir>/a/src",
        resolver: "jest-webpack-resolver"
    },
    {
        rootDir: "<rootDir>/b/src",
        resolver: "jest-webpack-resolver"
    }]
};

但也无济于事。

最佳答案

我遇到了完全相同的问题。我花了一段时间才想出这个问题,但我设法用我自己的 babel-jest 版本解决了这个问题,称为 babel-jest-nested:

https://github.com/lehni/babel-jest-nested

有了这个,我可以在 jest.config.js 的根级别指定我的项目:

module.exports = {
  projects: ['<rootDir>/packages/*']
}

我还在每个项目/包将加载的根级别上有一个 jest.base.config.js:

module.exports = {
  transform: {
    '^.+\\.jsx?$': 'babel-jest-nested'
  },
  testMatch: [
    '**/src/**/?(*.)+(test).js'
  ]
}

然后,在项目/包中,我再次在 jest.config.js 文件中简单地执行此操作:

module.exports = {
  ...require('../../jest.base.config.js')
}

突然之间,一切都正常了。魔法。

关于javascript - Jest 'projects' 配置不读取子文件夹中的 .babelrc 和 webpack.config.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50511308/

相关文章:

express - 如何为 webpack 模板添加后端?

javascript - 将回调从模块 A 传递到 B 并绑定(bind) this,仍然具有 B 的范围。使用 babel

javascript - 使用 Jest 测试函数和内部 if 循环

javascript:带有对象的公共(public)数组

javascript - HTML5 和 Javascript 中的随机移动

Javascript:用 <br/> 替换换行符在 FF 和 SAFARI 中工作而不在 IE 中工作

javascript - 如何减少 webpack 开发服务器重建时间

javascript - 手动模拟不适用于 Jest

javascript - Jest 报道忽略

javascript - 禁用文本框的属性