我正在尝试设置monorepo以一次运行所有Jest测试。在每个包中,我使用react-app-rewired来获取Babel,以便从其他包导入的代码进行转译,而不需要从create-react-app中弹出,如this article所述。
当从每个包文件夹运行
我的前端文件夹(monorepo根目录)中没有src文件夹,我不知道为什么Jest要在那里查找。我尝试在jest.config.js中提供rootDir和roots,但这似乎没有任何区别。我该如何让Jest停止寻找不存在的文件夹? jest.config.js(根目录):
当从每个包文件夹运行
react-app-rewired test
时,成功运行,但是当从monorepo的根文件夹运行时,我会收到此错误。Directory /Users/Me/go/src/gitlab.com/my-org/front-end/src in the roots[0] option was not found.
我的前端文件夹(monorepo根目录)中没有src文件夹,我不知道为什么Jest要在那里查找。我尝试在jest.config.js中提供rootDir和roots,但这似乎没有任何区别。我该如何让Jest停止寻找不存在的文件夹? jest.config.js(根目录):
module.exports = {
rootDir: ["."],
projects: [
"<rootDir>/packages/app",
"<rootDir>/packages/components",
"<rootDir>/packages/utils",
],
};
package.json(根目录):
{
"name": "root",
"private": true,
"workspaces": [
"packages/*"
],
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"**/*.{js,jsx,ts,tsx,json,css,scss,md}": [
"prettier --write"
]
},
"scripts": {
"analyze": "source-map-explorer 'build/static/js/*.js'",
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject",
"prettier": "prettier --check '**/*.js'",
"prettier:fix": "prettier --write '**/*.js'"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
config-overrides.js (根目录):
const path = require("path");
const { override, babelInclude } = require("customize-cra");
module.exports = function (config, env) {
return Object.assign(
config,
override(
babelInclude([
path.resolve("./packages/app"),
path.resolve("./packages/components"),
path.resolve("./packages/utils"),
])
)(config, env)
);
};