【发布时间】:2020-04-27 21:34:39
【问题描述】:
我正在尝试使用 yarn 工作区 monorepo。它由一个使用create-react-app 创建的TestProject 和一个使用create-react-library 创建的SharedLib1 组成。 TestProject 从 SharedLib1 导入代码。问题是,TestProject 使用 react-scripts 3.3.0,它依赖于 babel-jest ^24.9.0,而 SharedLib1 使用 react-scripts-ts ^2.16.0,它依赖于 babel-jest 22.4.4。在 TestProject 中运行 yarn start 时,它会抱怨:
The react-scripts package provided by Create React App requires a dependency:
"babel-jest": "^24.9.0"
Don't try to install it manually: your package manager does it automatically.
However, a different version of babel-jest was detected higher up in the tree:
/monoRepo/node_modules/babel-jest (version: 22.4.4)
我可以通过在 TestProject 中设置 SKIP_PREFLIGHT_CHECK=true 或手动升级 SharedLib1 中的 react-scripts 来禁用该错误,但我想知道是否有更好的处理方法。
myMonorepo
-web
-SharedLib1
-package.json
-TestProject
-package.json
-package.json
myMonoRepo 的Package.json:
{
"name": "my-mono-repo",
"version": "0.1.0",
"private": true,
"workspaces": [
"web/*"
],
"nohoist": [
"**/babel-jest",
"**/babel-jest/**"
]
}
myMonoRepo 的Package.json:
{
"name": "test-proj",
"version": "0.1.0",
"private": true,
"dependencies": {
...
"shared-lib-1": "^1.0.0"
}
}
以及测试代码App.tsx:
import React from 'react';
import TestComp from 'shared-lib-1';
import './App.css';
const App: React.FC = () => {
return (
<div className="App">
<TestComp text={'aaa'}/>
Learn React
</div>
);
}
export default App;
TestProj 的 node_modules 里面有一个 babel-jest 24.9.0,myMonoRepo 的 node_modules 里面还有一个 22.4.4
【问题讨论】:
-
您能否分享您在多个
node_modules文件夹中的文件系统上找到babel-jest的位置?你也可以分享yarn why babel-jest的输出吗? -
您可以将示例最小项目发布到公共存储库吗?
标签: reactjs create-react-app yarnpkg monorepo yarn-workspaces