问题描述
假设我有一个使用标准 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
。