gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:52:33 25 4
gpt4 key购买 nike

我有一个存储库,里面有一堆不同的前端 React 项目,它们都有自己的 package.json 文件。
我有四个要求:

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

  • 这些包不需要同时运行。并非每个项目都包含完全相同的依赖项,但都至少包含一些常见的依赖项(即 React、Webpack、Babel 等)。这些包也是完全私有(private)的,不应在 npm 上发布,只能在 GitHub 上发布。
    我已经对工具进行了一些研究,但我对 Yarn Workspaces 是否单独是解决方案感到困惑,或者是否需要 Lerna。到目前为止,我在 Yarn Workspaces 中所做的工作如下:
    文件夹结构:
    Repo-root
    Packages
    Project-1
    Project-2
    repo 根 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 文件更新到它们的最新版本? (我希望所有项目都一样)

    最佳答案

    yarn 有一个 upgrade interactive模式,使这很容易。
    在你的情况下,你想要 cd进入你的 monorepo 的根目录并运行 yarn upgrade-interactive --latest这些包将分为两个列表:您的依赖项和 devDependencies,但按字母顺序排序。您必须手动选择要升级的每个库,但所有相同的模块都将彼此相邻,无论它们位于哪个子目录中。

    关于npm - 如何将 monorepo 中的所有子文件夹 package.json 更新为相同版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68059301/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com