希曼日记

pnpm workspace包管理

本页目录 3
  1. 🔍 查看包的可用版本列表
  2. ⚙️ 绕过版本范围限制,更新到最新版
  3. 💡 补充:检查工作区中所有过时的包

🔍 查看包的可用版本列表

你可以用 pnpm view 命令查询一个包在 registry(npm 注册表)上的所有可用版本。

  • 查看所有可用版本:
Text
bash
pnpm view <package-name> versions

例如,要查看 react 的所有版本,可以运行:

Bash
pnpm view react versions
  • 查看最新版本:
Bash
pnpm view <package-name> version

这条命令会直接返回该包的最新版本号

  • 查看 dist-tags(如 latest、beta 等标签对应的版本):
Bash
pnpm view <package-name> dist-tags

这能帮助你了解除了最新稳定版之外,是否还有预发布版本。

⚙️ 绕过版本范围限制,更新到最新版

pnpm update(别名 pnpm up)命令默认会在 package.json 指定的版本范围内进行更新。要忽略这些范围(如 ^、~),直接更新到最新版本,需要加上 --latest(或 -L)参数。

  • 在工作区根目录,更新所有包的依赖到最新版本:

如果你在 pnpm-workspace.yaml 所在的根目录,并且希望一次性更新所有子包的依赖,需要使用 --recursive(或 -r)参数:

Bash
pnpm update --latest --recursive

或者使用简写:

Bash
pnpm up -L -r

请注意:这个操作会忽略所有 package.json 中的版本范围限制,可能导致跨大版本升级,请务必谨慎操作,并充分测试。

  • 更新工作区中特定包的依赖:

可以结合 --filter 参数来指定要更新的包:

Bash
pnpm --filter <package-name> update --latest

例如:

Bash
pnpm --filter @my-app/core update --latest
  • 交互式更新: 如果你不想一刀切地更新所有包,可以使用 --interactive(或 -i)参数。这会列出所有过时的依赖,让你逐一选择要更新的版本:
Bash
pnpm update --latest --interactive

这是一个更安全的替代方案。

💡 补充:检查工作区中所有过时的包

在决定更新之前,可以使用 pnpm outdated 命令检查工作区中所有子包的过时依赖:

Bash
pnpm outdated --recursive

或者使用简写:

Bash
pnpm outdated -r

这个命令会列出所有有更新版本的包,方便你评估更新的范围和影响。