Xun*_*ang 22 reactjs create-react-app monorepo yarnpkg yarn-workspaces
我正在试验纱线工作区 monorepo。它由一个用 创建的 TestProjectcreate-react-app和一个用创建的 SharedLib1 组成create-react-library。TestProject 从 SharedLib1 导入代码。问题是,TestProject 使用依赖于 babel-jest ^24.9.0 的 react-scripts 3.3.0,而 SharedLib1 使用依赖于 babel-jest 22.4.4 的 react-scripts-ts ^2.16.0。yarn start在 TestProject 中运行时,它抱怨:
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)
Run Code Online (Sandbox Code Playgroud)
我可以通过SKIP_PREFLIGHT_CHECK=true在 TestProject 中设置或手动升级 SharedLib1 中的 react-scripts来禁用错误,但我想知道是否有更好的方法来处理这个问题。
myMonorepo
-web
-SharedLib1
-package.json
-TestProject
-package.json
-package.json
Run Code Online (Sandbox Code Playgroud)
myMonoRepo 的 Package.json:
{
"name": "my-mono-repo",
"version": "0.1.0",
"private": true,
"workspaces": [
"web/*"
],
"nohoist": [
"**/babel-jest",
"**/babel-jest/**"
]
}
Run Code Online (Sandbox Code Playgroud)
myMonoRepo 的 Package.json:
{
"name": "test-proj",
"version": "0.1.0",
"private": true,
"dependencies": {
...
"shared-lib-1": "^1.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
和测试代码 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;
Run Code Online (Sandbox Code Playgroud)
TestProj 的 node_modules 中有一个 babel-jest 24.9.0,myMonoRepo 的 node_modules 中有另一个 22.4.4
这与 GH 存储库上针对 create-react-app 提出的问题非常相似(即使不相同),您可能会在那里找到更多信息。
也就是说,您可能会尝试转向babel-jestadevDependency而不是包依赖项。如果这不起作用,您可以尝试选择性依赖解决方案,您可以在其中强制您的项目使用特定版本babel-jest-
"resolutions": {
"babel-jest": "^24.9.0",
"shared-lib-1": "^1.0.0"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |