如何升级 lerna 子包的节点模块



我开始使用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-apackage.json:

{
"name": "package-a",
"version": "1.0.0",
"private": true,
"dependencies": {
"moment": "2.22.0"
}
}

我的package-bpackage.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文件中。

最新更新