删除工作区后更新 yarn.lock

问题描述

假设我有一个使用标准 workspace 结构的 monorepo:

monorepo
|- package.json
|- yarn.lock
|- packages
   |- package_a
   |- package_b

我想完全摆脱 package_a,同时也相应地更新 yarn.lock。

以下不会更新锁文件

$ rm -rf packages/package_a
$ yarn install

在 monorepo 的根目录中运行它也不起作用:

$ yarn remove -W package_a
error This module isn't specified in a package.json file.

这确实有效,但会影响所有 范围允许的不需要的包。

$ rm -rf packages/package_a
$ yarn upgrade

我怎样才能做到这一点?

解决方法

我可能误解了您的问题...但您似乎需要将每个 package 包含在您的 package.json 中,如此处每个 workspace 所述:https://classic.yarnpkg.com/en/docs/workspaces/

package.json 中需要:

{
  "private": true,"packages": ["package_a","package_b"]
}

我猜这就是您在尝试 error This module isn't specified in a package.json file. 时收到错误 yarn remove -W package_a 的原因。当它包含在 package.json 中时,只需 yarn remove package_a 这也会自动更新您的 yarn.lock

https://classic.yarnpkg.com/en/docs/cli/remove