Yarn is a tool that is built on top of NPM. It was originally created by Facebook, to solve various dependency and caching issues involving NPM.
Both Yarn and NPM use the NPM registry to install software packages in your project. This means that if you want to install a fresh version of e.g. the Material UI framework, you can use either npm or yarn:
// with npm npm install @material-ui/core // with yarn yarn add @material-ui/core
The result is the same.
Let’s discuss some of the advantages of Yarn over NPM.
The main advantage Yarn has over NPM, is speed. Yarn is faster is because it provides parallel installation of packages, while NPM installs one package at a time.
NPM used to have security issues involving how they managed dependencies installs and version control. Yarn solved this with the
yarn.lock file which ensures that developers install the same package versions across different devices.
Note: since NPM5 was released, NPM also has a lock file, called
package.lock which has improved version control greatly.
NPM and Yarn are much more similar than different in 2019. Yarn still edges out NPM in terms of speed, but other than that, my current impression is that it won’t make much of a difference which one you use. As long as you’re consistent, you’ll have a good time using either.
On a personal side note, I consistently have more problems using NPM than Yarn. I haven’t been able to make the Material UI framework update properly when using NPM, but it always works with Yarn. That’s just my personal anecdote, but it’s one reason that I still prefer Yarn over NPM. That might change in the future though.
For plenty of technical comparisons between Yarn and NPM, check out this great NPM vs. Yarn Cheat Sheet by Gant Laborde.