Why I stopped using npm ?
Disclaimer: I love npm, it is so convenient. It makes your javascript application modular by installing any existing package in a breeze. However, I must admit that waiting for npm while it is installing all the dependencies is painful, especially when your project grows. But now, this long waiting time is no longer existing with Yarn.
What is Yarn ?
Yarn is a package manager for javascript applications. As npm, it lists all your dependencies in a package.json
file and install them in the node_modules
folder
What is cool with Yarn ?
- It is compatible with the npm registry.
- The progress bar is smoother, and the output is cleaner (and includes emojis 😺).
- It is freakingly faster because it generates a cache of the previously installed packages and run tasks downloading and installation tasks in parallel.
- It creates a
yarn.lock
that you commit and ensures that everyone working on the project has the same version of every package. Unlike npm shrinkwrap that must be manually invoked, yarn updates this file itself every time a new package is added or removed.
How do I get started ?
Funnily enough, you can install yarn with npm:
npm install -g yarn
If you already have projects packaged with npm, you can replace all your npm install
calls with yarn install
Now, when you need to add new packages, the syntax is a litle different
yarn add [package-name]
To create a new project, just run
yarn init
Now, on an example
On a React-native project I am working on, I did try installing the whole project node dependencies with npm and with Yarn. Here is the result:
- Yarn : 37s
- npm : 2m41s = 161s
This is Yarn output:
Ant there is npm output:
The winner is from far Yarn with 77% less time and a much more readable output.
Conclusion
At the end, there is almost no difference, except for a few commands to remember, between npm and yarn. Yarn is just really faster, so it’s worth giving it a try !