gpt4 book ai didi

jestjs - 开 Jest 不在多项目模式下选择配置

转载 作者:行者123 更新时间:2023-12-04 08:54:17 29 4
gpt4 key购买 nike

我们最近将两个不同的 repos 迁移到一个 monorepo 中。每个都使用 jest 和自己的自定义配置,在他们自己的 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 可以很好地运行该文件,但从根目录运行时会被忽略。

我对多项目模式的理解是每个单独的项目都应该保持自己的设置/配置不变。我错过了什么?我是否也需要在根目录中配置这些?

最佳答案

我认为 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,
});

并将其用于您的根变压器
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',
},

关于jestjs - 开 Jest 不在多项目模式下选择配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46652873/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com