【发布时间】:2021-09-04 14:47:23
【问题描述】:
我有一个包含一堆不同前端 React 项目的存储库,它们都有自己的 package.json 文件。
我有四个要求:
- 我希望将所有这些项目保持在同一个依赖关系轨道上。 (即,我希望我的所有项目都使用每个 npm 包的相同版本)
- 我希望能够使用一个“全局”命令将每个 package.json 更新到最新版本。
- 理想情况下,我希望使用某种经过验证的开源工具,例如 Yarn Workspaces 或 Lerna,而不是使用全局 package.json 文件自行管理。
- 我正在使用 Yarn 生态系统。
这些包不需要同时运行。并非每个项目都包含完全相同的依赖项,但都至少包含一些常见的依赖项(即 React、Webpack、Babel 等)。这些包也是完全私有的,不应该在 npm 上发布,只能在 GitHub 上发布。
我对工具进行了一些研究,但我很困惑是否仅使用 Yarn Workspaces 是解决方案,或者是否需要 Lerna。以下是我迄今为止在 Yarn Workspaces 中所做的工作:
文件夹结构:
Repo-root
Packages
Project-1
Project-2
回购根包.json:
{
"private": true,
"name": "example-monorepo",
"workspaces": ["packages/*"],
"scripts": {}
}
我了解 Yarn Workspaces 试图将所有常见的依赖项移动到幕后的根节点模块,但我对如何完成共享依赖项安装和更新到最新版本的要求感到困惑。 Yarn Workspaces 是否可以自行完成要求,或者 Lerna 对此是否有必要?这将如何在 Lerna 中完成?我是否需要定义一个全局 package.json “单一事实来源”,或者工具是否在幕后自己做一些版本? Lerna 或 Yarn Workspaces 如何“知道”如何在没有全局版本范围的情况下将所有单独的 package.json 文件更新到最新版本? (我希望所有项目都一样)
【问题讨论】:
标签: npm yarnpkg lerna yarn-workspaces