Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including fix-yarn-global-packages with all npm packages installed. Try it out:

fix-yarn-global-packages lists no main file and has no index.js, so it can't be directly required. If this is a mistake, please let us know. It may however contain internal files that you can require manually:

// require("fix-yarn-global-packages/[??]")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

fix-yarn-global-packages v1.0.1

Use this to fix your yarn global packages after upgrading node

fix-yarn-global-packages

Installed global packages using yarn?

Can't access them since updating node?

Use fix-yarn-global-packages to use your global packages again!

Installation

$ npm install -g fix-yarn-global-packages

Make sure to use npm over yarn. That way next time you update node you'll still be able to run this tool.

Usage

If you can't run your global packages after updating node just run the following in your terminal:

$ fix-yarn-global-packages
linked http-server
linked css-beautify
linked http-beautify
linked js-beautify
linked <all your other global packages>

With any luck, you should be able to use your yarn-installed global packages again.

What now?

My recommendation is that you install global packages using npm until the issue is resolved.

You can still use yarn to install global packages in the mean time - it just means you'll have to run fix-yarn-global-packages each time.

Why does yarn break my global packages?

npm symlinks global package binaries to /usr/local/bin.

yarn symlinks global package binaries to the same directory that node lives.

The issue is when node is updated using tools such as brew.

Rather than clobbering the old version of node, brew stores the updated version of node in a new directory.

The problem is that all the existing symlinked binaries are in the old node directory.

What does fix-yarn-global-packages do under the hood?

  • Finds all the files in ~/.config/yarn/global/node_modules/.bin
  • symlinks each of the files above into yarn global bin

Essentially it's copying what yarn did when you first ran yarn global add <blah>

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free