如何在Yarn中更新全局软件包?


70

我尝试了一些可能的CLI命令,但似乎没有一个命令真正更新使用安装的软件包yarn global add

yarn global upgradeyarn upgrade global两者均无法正常工作。有没有升级全局软件包的方法?


您到底要尝试安装/更新什么?
andrei

Answers:


77

TL; DR:

正如webjay所说,您只需:

yarn global upgrade

yarn1.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)

1
由于“ yarn全局升级--latest”抱怨过时的锁定文件,我不得不进入〜/ .config / yarn / global目录并执行“ yarn install”。之后,我才能够再次运行yarn global upgrade命令。
ufk '18

32

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

更新资料

最近添加的yarn global upgrade升级所有软件包。原始答案时不存在此功能。


4
升级单个软件包既可行yarn global add <package>yarn global upgrade <package>可行(但问题是如何升级所有全局软件包,而不仅仅是其中一个)。
McGiogen

1
是的,这就是为什么我明确说明了其当前支持的原因。👍🏼–
cchamberlain

1
是否有类似“ ncu -g”的内容来检查更新?
Tosho



3

请注意,即使是使用yarnpkg / yarn#5001yarn global upgrade foo也不总是将软件包升级到最新版本。--latest标志。

例如,如果您安装了foov12.0.1且v13.0.0可用,则不会升级到v13.0.0,因为yarn global upgrade默认情况下当前不会超出semver的主要限制(有关更多信息,请参见上述问题)。

跑步yarn global add foo 升级当前安装的版本到最新即使当前安装的版本和最新版本之间的semver主要版本肿块。

我相信这yarn global upgrade-interactive也将允许升级过去的主要版本。


0

尝试升级时出现错误。这在安装纱线2之后开始发生。

我正在尝试通过以下方式升级我的全局安装的纱线包:

yarn global upgrade

显然yarn global已被替换yarn dlx,但yarn dlx 与不会做相同的事情yarn global。:/多么令人困惑。

对我来说,技巧是通过以下方式暂时降级安装:

yarn set version classic

现在,我可以运行upgrade命令。

之后,我通过以下方式再次更新:

yarn set version berry
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.