如何升级lerna子包的node模块

How to upgrade node module of the lerna's subpackage

我开始使用 lerna 以便能够使用单个命令为所有子包安装所有节点模块。 目前我不使用任何其他 lerna 功能,除了 lerna bootstrap。 我的 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子包中的node模块应该如何正确升级?

因为您的两个包都是私有的,所以 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 文件。