如何更新 Yarn 中的全局包?

How can I update global packages in Yarn?

我尝试了一些可能的 CLI 命令,但 none 似乎实际上更新了使用 yarn global add 安装的软件包。

yarn global upgrade & yarn upgrade global 都不能正常工作。有没有办法升级全局包?

已经在 https://github.com/yarnpkg/yarn/issues/776

上为此创建了一个问题

使用 yarn global add <package>@latest 将升级特定的包,如果这是您想要做的。

更新

最近添加的yarn global upgrade升级了所有包。这在原始答案时不存在。

长话短说:

作为 ,您只需:

yarn global upgrade

yarn 版本 1.2.1 之后。

对于早期版本:

(cd ~/.config/yarn/global && yarn upgrade)

检查和修复

遗憾的是,目前没有yarn global check

您可以运行 yarn global add --force 重新安装所有软件包。

对于 check 全局包,您可以像对待本地包一样对待 ~/.config/yarn/global/,因为:

  • ~/.config/yarn/global/package.json 对所有全局包有依赖关系
  • ~/.config/yarn/global/node_modules 包含所有全局包。

检查所有全局包,发现错误才重新安装:

$ (cd ~/.config/yarn/global && yarn check || yarn install --force)

我正在使用 yarn global upgrade

请注意,根据 yarnpkg/yarn #5001yarn global upgrade foo 不会 总是 将包升级到最新版本,即使带有 --latest 标志。

例如,如果您安装了 foo v12.0.1 并且 v13.0.0 可用,这将不会升级到 v13.0.0,因为 yarn global upgrade 目前没有经过 semver 中的主要颠簸默认情况下(有关更多信息,请参见上一期的讨论)。

运行 yarn global add foo 是否 将当前安装的版本升级到最新版本,即使当前安装的版本与最新版本。

我相信 yarn global upgrade-interactive 也能让人升级过去的主要版本。

我在尝试升级时遇到错误。安装 yarn 2.

后开始出现这种情况

我试图通过以下方式升级全局安装的 yarn 包:

yarn global upgrade

显然 yarn global 已经 replaced with yarn dlx, however yarn dlx does not do the same 变成了 yarn global。多么混乱:/.

我的诀窍是通过以下方式暂时降级我的安装:

yarn set version classic

现在我可以运行升级命令了。

之后,我又更新了:

yarn set version berry