Jest没有在多项目模式中获取配置

时间:2017-10-09 18:32:02

标签: jestjs babel-jest

我们最近将两个不同的回购迁移到了monorepo。每个人都使用自己的自定义配置,在自己的package.json文件中定义。

我想使用--projects标志从monorepo的根目录中跨两个项目运行Jest。我已将jest.config.js文件添加到monorepo的根目录中:

module.exports = {
    projects: ['<rootDir>/projectA', '<rootDir>/projectB']
}; 

跑步者成功获得了两个项目的测试,但似乎没有使用每个项目的自定义配置。例如,在“projectA”中,我使用的是babel-plugin-module-resolver。当我单独在该项目中运行jest时,babel-jest成功获取该插件并且它工作正常,但是当我在多项目模式下从根运行它时,我得到“找不到模块...”错误,表明插件未被使用。

同样,在“projectB”中我使用的是自定义setupTestFrameworkScriptFile。在这个项目中运行jest运行该文件很好,但是从根目录运行时会被忽略。

我对多项目模式的理解是每个项目都应保持其自己的设置/配置完好无损。我错过了什么?我是否还需要在根目录中配置它们?

1 个答案:

答案 0 :(得分:0)

我认为jest多项目运行程序存在一些错误,我们需要提供一些失败的示例,以便jest可以解决它。几乎没有关于它的文档

我做了这项工作,提供的是自定义babel变压器,而不是直接使用babel-jest。

检查此链接https://twitter.com/sseraphini/status/1061779382669316098

将其用于包装内的变压器

const config = require('../shared/babel.config.js');

 const { createTransformer } = require('babel-jest');
 module.exports = createTransformer({
  ...config,
});

并将其用于您的根转化器

const { join, resolve } = require('path');
 const { createTransformer } = require('babel-jest');
 const packagePath = resolve('../');

const packageGlob = join(packagePath, '*');
 module.exports = createTransformer({
  babelrcRoots: packageGlob,
});

在jest.config.js上这样使用

transform: {
    '^.+\\.(js|ts|tsx)?$': '<rootDir>/test/babel-transformer',
},