【问题标题】:从子文件夹中删除 node_modules 后,如何恢复每个 lerna 存储库中的包?
【发布时间】:2022-01-17 22:10:45
【问题描述】:

我的存储库结构是

codebook
-packages
  -clii
  -local-api
  -local-client
-lerna.json
-package.json

我将本地 api 安装到 cliilocal-clientlocal-api 但是为了发布我想更改 local-apilocal-client 的名称所以我将 local-api 更改为 @codebook/local-api@codebook/local-client .并运行lerna bootstrap。 我收到了npm ERR! code E404。所以我删除了每个子文件夹中的node_modules。我以为lerna bootstrap 会链接新文件并安装软件包。但它不工作。现在每个子存储库中都缺少所有软件包。我无法在每个存储库中执行 npm install。我应该怎么做才能安装所有的包?

【问题讨论】:

  • “我无法在每个存储库中进行 npm 安装。我应该如何安装所有软件包?” Lerna 的工作方式是不必在任何子文件夹中运行npm 命令。 bootstrap 命令将安装公共包或符号链接您在lerna ls 命令中列出的本地包。

标签: reactjs npm yarnpkg lerna


【解决方案1】:

如果要更改已添加到其他包的内部依赖项的包名,则还需要在依赖的 package.json 文件中更改该包名。不幸的是,我不知道如何告诉 lerna 迁移或“重命名”项目中的依赖项。

因此,如果您将local-api 更改为@codebook/local-api,则需要进入clii 的package.json 并将local-api 更新为@codebook/local-api

也就是说:根据我的经验,lerna bootstrap 有很多问题,404s 很多。我不知道为什么。我的所有问题都通过使用 lerna 来添加 依赖项以及使用 yarn 工作区来下载和链接 依赖项来解决。不同之处在于,lerna 只是添加到 package.json 文件中,而 yarn 负责下载和符号链接工作。

所以这里的过程是将workspaces: ["packages/*"]添加到你的package.json并通过以下命令添加新的deps:

lerna add @codebook/local-api --scope=clii --no-bootstrap
yarn install

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 2015-09-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2014-07-29
    • 1970-01-01
    • 2020-10-11
    相关资源
    最近更新 更多