我开始使用lerna,以便能够使用单个命令为所有子包安装所有节点模块。目前,除了lerna bootstrap
,我没有使用任何其他lerna功能。我的lerna.json
:
{
"lerna": "3.22.0",
"npmClient": "yarn",
"packages": [
"package-a",
"package-b"
],
"version": "1.0.0"
}
我的根package.json
:
{
"name": "test",
"private": true,
"version": "1.0.0",
"scripts": {
"postinstall": "lerna bootstrap"
},
"dependencies": {
"lerna": "^3.22.1"
}
}
我的package-a
的package.json
:
{
"name": "package-a",
"version": "1.0.0",
"private": true,
"dependencies": {
"moment": "2.22.0"
}
}
我的package-b
的package.json
:
{
"name": "package-b",
"version": "1.0.0",
"private": true,
"dependencies": {
"package-a": "1.0.0",
"moment": "2.22.0"
}
}
我想升级package-b
中的moment
。如果我在package-b
文件夹中运行yarn upgrade moment --latest
,我会得到以下错误:
yarn upgrade v1.22.5
[1/4] 🔍 Resolving packages...
error Received malformed response from registry for "package-a". The registry may be down.
info Visit https://yarnpkg.com/en/docs/cli/upgrade for documentation about this command.
如果我在根文件夹中运行npx lerna --scope package-b exec -- "yarn upgrade moment --latest"
,我会得到以下错误:
lerna notice cli v3.22.1
lerna notice filter including "package-b"
lerna info filter [ 'package-b' ]
lerna info Executing command in 1 package: "yarn upgrade moment --latest"
yarn upgrade v1.22.5
[1/4] 🔍 Resolving packages...
error Received malformed response from registry for "package-a". The registry may be down.
info Visit https://yarnpkg.com/en/docs/cli/upgrade for documentation about this command.
lerna ERR! yarn upgrade moment --latest exited 1 in 'package-b'
lerna ERR! yarn upgrade moment --latest exited 1 in 'package-b'
我应该如何正确升级lerna子包中的节点模块?
因为您的两个包都是私有的,所以npm
存储库在升级moment
库时找不到它们。此外,lerna
包目前基本上未维护。
有一个变通办法。暂时从package-b.json
文件中删除"package-a": "1.0.0",
行。
更新的package-b/package.json
文件:
{
"name": "package-b",
"version": "1.0.0",
"private": true,
"dependencies": {
"moment": "2.22.0"
}
}
现在运行:
cd package-b && yarn upgrade moment --latest && cd ..
然后将"package-a": "1.0.0",
行放回到package-b.json
文件中。