As powerful as npm is, it is not the only package management system for Node.js. Because the Node.js core team does not dictate a package management system, the Node.js community is free to roll up their sleeves and develop any system they feel best. That the vast majority of us use npm is a testament to its value and usefulness. But there is a competitor.
Yarn (see https://yarnpkg.com/en/) is a collaboration between engineers at Facebook, Google, and several other companies. They proclaim that Yarn is ultra fast, ultra-secure (by using checksums of everything), and ultra reliable (by using a yarn-lock.json file to record precise dependencies).
Instead of running their own package repository, Yarn runs on top of npm's package repository at npmjs.com. This means that the Node.js community is not forked by Yarn, but enhanced by having an improved package management tool.
The npm team responded to Yarn in npm@5 (also known as npm version 5) by improving performance, and by introducing a package-lock.json file to improve reliability. The npm team have announced additional improvements in npm@6.
Yarn has become very popular and is widely recommended over npm. They perform extremely similar functions, and the performance is not that different to npm@5. The command-line options are worded differently. An important benefit Yarn brings to the Node.js community is that competition between Yarn and npm seems to be breeding faster advances in Node.js package management.
To get you started, these are the most important commands:
- yarn add: Adds a package to use in your current package
- yarn init: Initializes the development of a package
- yarn install: Installs all the dependencies defined in a package.json file
- yarn publish: Publishes a package to a package manager
- yarn remove: Removes an unused package from your current package
Running yarn by itself does the yarn install behavior. There are several other commands in Yarn, and yarn help will list them all.