Pat*_*nch 6 npm reactjs npm-workspaces
我们有一个 mono-repo,我正在将其迁移到 npm 7 的工作区。
当前文件夹组织:
\React
- package.json (defines workspaces for \apps and \packages)
\apps
\someApp
- React 17.0.1 (Dependency)
\otherApp
\packages
\component-library
- React 16.14.0 || 17.0.0 (Peer)
- Storybook (6.1)
- Storybook MUI Add On
\framework
- React 16.14.0 || 17.0.0 (Peer)
Run Code Online (Sandbox Code Playgroud)
npm ci在 React 文件夹中运行会在 \React\node_modules 中安装 React 16.14,在 \React\apps\someApp\node_modules 中安装 17.0.0。当尝试运行该应用程序时,由于安装了多个版本,我们收到了预期的挂钩错误。但我找不到任何明确需要 React 16.14 的东西?
问题中的具体问题看起来可能是 NPM 7 早期版本中的众多树艺错误之一 - 在 NPM 8 及更高版本中,应该看到 React 17 受到所有支持,因此应该选择。
对于使用较新版本的 NPM 遇到类似问题的任何人 - 在 NPM >=8.3.0 中,您可以使用overrides强制特定版本。
重要笔记:
overrides只能在存储库的 root 中设置package.json,而不是在单个工作区package.json文件中设置。"react": "^16.x.x"实际上与 React 17 兼容,只是尚未更新,但不是全部;有些可能与 React 17 不兼容。请小心并查找您要覆盖其依赖项的包的存储库上的问题"^16.x.x"。您甚至可能可以应用直接支持 React 17 的新版本或替代方案。react-dom并react确保两者不会不同步。像这样的东西应该在 root 中工作package.json:
"overrides": {
"react": "^17.0.1",
"react-dom": "^17.0.1",
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2360 次 |
| 最近记录: |