NPM vs Yarn
NPM (Node Package Manager)
- Default package manager for node
- Uses semantic versioning
- major.minor.patch e.g. 1.2.3
- patch versions are bugfixes that don’t break anything
- minor versions add functionality but don’t break anything
- major versions may have breaking changes
- Installs packages sequentially which can be slow
- NPM 5 added the package-lock.json file
- Introduced to prevent the scenario where two people who install deps might get different versions
- Specifies the exact version of the installed package
- Should be committed to SC to allow the exact history of node_modules to be tracked
Yarn
- Introduced to fix many of the issues that NPM had
- Introduced the lock file concept
- Was much quicker to install packages
- Introduced package caching
- Had logical default for installing new packages
- NPM required –save or –save-dev flag to update package.json
- Many of these issues with NPM were remedied in version 5