如何将 monorepo 中的所有子文件夹 package.json 更新为相同版本?

问题描述

我有一个仓库,里面有一堆不同的前端 React 项目,它们都有自己的 package.json 文件

我有四个要求:

  1. 我希望将所有这些项目保持在同一个依赖项轨道上。 (即,我希望我的所有项目都使用每个 npm 包的相同版本)
  2. 我希望能够使用一个“全局”命令将每个 package.json 更新到它们的最新版本。
  3. 理想情况下,我想使用某种经过验证的开源工具,例如 Yarn Workspaces 或 Lerna,而不是自己使用全局 package.json 文件来管理这一切。
  4. 我正在使用 Yarn 生态系统。

这些包不需要同时运行。并非每个项目都包含完全相同的依赖项,但都至少包含一些常见的依赖项(即 React、Webpack、Babel 等)。这些包也是完全私有的,不应在 npm 上发布,只能在 GitHub 上发布。

我对该工具进行了一些研究,但对于 Yarn Workspaces 是单独的解决方案还是需要 Lerna 感到困惑。以下是我目前在 Yarn Workspaces 中所做的工作:

文件夹结构:

Repo-root
   Packages
      Project-1
      Project-2

repo root package.json:

{
   "private": true,"name": "example-monorepo","workspaces": ["packages/*"],"scripts": {}
}

我知道 Yarn Workspaces 试图在幕后将所有常见依赖项移动到根 node_modules,但我对如何完成共享依赖项安装和更新到最新版本要求感到困惑。 Yarn Workspaces 能否自行完成要求,或者 Lerna 是否需要这样做?这将如何在 Lerna 中完成?我是否需要定义一个全局 package.json“单一事实来源”,或者这些工具在幕后自己做一些版本吗? Lerna 或 Yarn Workspaces 如何“知道”如何在没有全局版本范围集的情况下将所有单独的 package.json 文件更新到它们的最新版本? (我希望所有项目都一样)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)