从嵌套的 Lerna 包中删除依赖项

Posted

技术标签:

【中文标题】从嵌套的 Lerna 包中删除依赖项【英文标题】:Remove dependency from nested Lerna Package 【发布时间】:2019-02-02 14:23:24 【问题描述】:

我有一个 lerna 设置,其中包含位于 packages/ 下的 n 包。让我们举一个例子,其中一个包使用 express 而其他包不使用。

如何以 lerna 感知的方式从这个包中删除 express,以便更新根 package.json?

我可以使用lerna add --scope 添加软件包,但似乎没有相应的删除功能。

【问题讨论】:

【参考方案1】:

只需从你的 package.json 中删除包

然后运行

$lerna bootstrap

【讨论】:

不幸的是,这不会删除 package-lock.json 中的条目【参考方案2】:
    package.json 中删除包 删除 node_modules 文件夹:rm -rf packages/package_name/node_modules 运行lerna bootstrap

如果没有第 2 步,包仍然存在于 package-lock.json NPM 锁定文件中。

【讨论】:

【参考方案3】:

如果您想确保lerna bootstrap 更新@org-name/package-name/ 中的特定 package-lock.json 而不是其他package-lock.json 文件,请执行以下操作:

    @org-name/package-name/package.json手动删除依赖项

    运行:

lerna bootstrap --scope @org-name/package-name --no-ci --force-local

【讨论】:

以上是关于从嵌套的 Lerna 包中删除依赖项的主要内容,如果未能解决你的问题,请参考以下文章

Gradle - 排除嵌套的传递依赖

从嵌套地图对象javascript中删除重复项

从Python中的嵌套列表中删除连续的重复项?

从对象数组中的嵌套数组中删除重复项

MongoDB,从数组中的对象中删除嵌套项

从Google BigQuery中的嵌套表中删除重复项