我们最近将两个不同的回购迁移到了monorepo.每个人都使用jest和自己的自定义配置,这些配置在他们自己的package.json文件中定义.
我想使用该--projects标志从monorepo的根目录中跨两个项目运行Jest.我已经jest.config.js在monorepo的根目录中添加了一个文件:
module.exports = {
projects: ['<rootDir>/projectA', '<rootDir>/projectB']
};
Run Code Online (Sandbox Code Playgroud)
跑步者成功地为两个项目选择了测试,但它似乎没有使用每个项目的自定义配置.例如,在"projectA"中,我使用的是babel-plugin-module-resolver.当我单独在该项目中运行jest时,babel-jest成功获取该插件并且工作正常,但是当我在多项目模式下从根运行它时,我得到"无法找到模块..."错误,表明插件未被使用.
同样,在"projectB"中我使用的是自定义setupTestFrameworkScriptFile.在这个项目中运行jest运行该文件就好了,但是从根运行时会被忽略.
我对多项目模式的理解是每个项目都应保持自己的设置/配置完好无损.我错过了什么?我是否还需要在root中配置这些?
我认为 jest 多项目运行器存在一些错误,我们需要提供一些失败的示例,以便 jest 可以修复它。几乎没有关于它的文档
我通过提供自定义 babel-transformer 来完成这项工作,而不是直接使用 babel-jest。
检查此链接https://twitter.com/sseraphini/status/1061779382669316098
将其用于包装内的变压器
const config = require('../shared/babel.config.js');
const { createTransformer } = require('babel-jest');
module.exports = createTransformer({
...config,
});
Run Code Online (Sandbox Code Playgroud)
并将其用于您的根变压器
const { join, resolve } = require('path');
const { createTransformer } = require('babel-jest');
const packagePath = resolve('../');
const packageGlob = join(packagePath, '*');
module.exports = createTransformer({
babelrcRoots: packageGlob,
});
Run Code Online (Sandbox Code Playgroud)
在 jest.config.js 上像这样使用
transform: {
'^.+\\.(js|ts|tsx)?$': '<rootDir>/test/babel-transformer',
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |