How can I update global packages in Yarn?
I tried some possible CLI commands but none seem to actually update the packages installed with yarn global add
.
yarn global upgrade
& yarn upgrade global
both don't work correctly. Is there a way of upgrading global packages?
TL;DR:
As webjay says, you simply:
yarn global upgrade
in yarn
version 1.2.1 onwards.
For earlier versions:
(cd ~/.config/yarn/global && yarn upgrade)
Checking and repairing
Sadly, there is currently no yarn global check
.
You can run yarn global add --force
to reinstall all packages.
To check
global packages, you can treat ~/.config/yarn/global/
like a local package, since:
-
~/.config/yarn/global/package.json
has dependencies for all global packages -
~/.config/yarn/global/node_modules
contains all the global packages.
Check all global packages, and reinstall only if an error is found:
$ (cd ~/.config/yarn/global && yarn check || yarn install --force)
Using yarn global add <package>@latest
will upgrade a specific package if that is what you are trying to do.
Update
The recently added yarn global upgrade
upgrades all packages. This did not exist at the time of the original answer.
There has been an issue created for this already at https://github.com/yarnpkg/yarn/issues/776
Note that per yarnpkg/yarn #5001, yarn global upgrade foo
does not always upgrade a package to the latest version, even with the --latest
flag.
For example, if you have foo
v12.0.1 installed and v13.0.0 is available, this would not upgrade to v13.0.0 because yarn global upgrade
currently does not go past major bumps in semver by default (see discussion in above issue for more).
Running yarn global add foo
does upgrade the currently installed version to the latest even if there is a semver major version bump between the currently installed version and the latest version.
I believe that yarn global upgrade-interactive
would allow one to upgrade past major version bumps as well.