Skip to content

升级依赖

升级满足匹配规则的依赖

比如此配置,升级项目内全部满足 @ruan-cat 前缀的依赖,并升级到最后一个版本。

pnpm9.5.0

bash
pnpm up @ruan-cat/*@latest

pnpm9.15.0

在 pnpm9.15.0 内,无法完成升级。要写成以下形式才行,做完整的匹配:

bash
pnpm update '@ruan-cat/*' --latest

pnpm9.15.0 的单包升级依赖

非常诡异,搞不懂。上面的写法在单独的包内,是不能完成升级的。会报错。

bash
pnpm update '@ruan-cat/*' --latest
运行 pnpm update '@ruan-cat/*' --latest 命令

2025-06-25-03-22-12

直接报错

2025-06-25-03-22-58

log
> @01s-08mes/frontend@1.0.0 up-ruan-cat-2 D:\code\github-desktop-store\zero-one-mes\mes-frontend
> pnpm update '@ruan-cat/*' --latest

 ERR_PNPM_LATEST_WITH_SPEC  Specs are not allowed to be used with --latest ('@ruan-cat/*')
 ELIFECYCLE  Command failed with exit code 1.

不明白为什么过几个月后,之前能用的方案就又不能用了。按照报错,说是 --latest 参数在加上单引号的范围查询内,是不能使用的。

在几个项目内反复折腾了一下,现在又不得不写成 9.5.0 版本的写法,只不过加上了单引号,以范围查询的方式升级依赖。

bash
pnpm up '@ruan-cat/*@latest'

目前(2025-6-25),这个写法在多个项目内都能正常工作。

pnpm9.15.0 的 -F monorepo 升级依赖

我手上有 2 个 monorepo 项目,这个筛选参数又莫名其妙的不通用。一个项目能用,另一个项目又不能用了。

针对以下命令:

bash
pnpm -F=* up @ruan-cat/*@latest

我在文档项目内,是可以正常运行的,到了别的 monorepo 项目,又不行了。

使用全量筛选参数升级整个项目全部包的依赖

2025-06-25-03-32-45

失败

2025-06-25-03-34-09

又莫名其妙的提示说,没有匹配到任何子包。

log
> @ruan-cat-10wms/root@0.0.0 up-ruan-cat-2 D:\code\github-desktop-store\gh.10wms
> pnpm -F=* up @ruan-cat/*@latest

No matches found: "-F=*"
 ELIFECYCLE  Command failed with exit code 1.

pnpm9.15.0 的 -r monorepo 升级依赖

针对上面 -F=* 参数无法筛选任何子包的错误,目前只能用更加保守的写法,完成升级:

bash
pnpm -w up '@ruan-cat/*@latest' && pnpm -r up '@ruan-cat/*@latest'

升级全部依赖

这个写法是错误的:

bash
pnpm up *@latest

会引发以下报错:

详情
log
PS D:\code\github-desktop-store\gh.09oa> pnpm up *@latest
 WARN  deprecated @types/rollup-plugin-visualizer@5.0.3: This is a stub types definition. rollup-plugin-visualizer provides its own type definitions, so you do not need this installed.
 ERR_PNPM_FETCH_404  GET https://registry.npmmirror.com/oa-frontend: Not Found - 404

This error happened while installing a direct dependency of D:\code\github-desktop-store\gh.09oa

oa-frontend is not in the npm registry, or you have no permission to fetch it.

No authorization header was set for the request.
Progress: resolved 77, reused 76, downloaded 1, added 0

正确的写法应该是:

bash
pnpm up * @latest

更加精简的写法:

bash
pnpm up -L

在 monorepo 内的写法,增加 -r 参数即可。连同根包也能匹配到位。

bash
pnpm -r up -L

贡献者

The avatar of contributor named as ruan-cat ruan-cat

页面历史