Oct 16, 2017
Difference Between NPM Dependencies Types
ref: stackoverflow
Summary of important behavior differences:
dependencies
are installed on both:npm install
from a directory that containspackage.json
npm install $package
on any other directory
devDependencies
are:- also installed on
npm install
on a directory that containspackage.json
, unless you pass the--production
flag - not installed on
npm install $package
on any other directory, unless you give it the--dev
option. - are not installed transitively.
- also installed on
peerDependencies
are:- before 3.0: are always installed if missing, and raise an error if multiple incompatible versions of the dependency would be used by different dependencies.
- expected starting on 3.0 (untested): give a warning if missing on
npm install
, and you have to solve the dependency yourself manually. When running, if the dependency is missing, you get an error.
- Transitivity:
dependencies
are installed transitively: if A requires B, and B requires C, then C gets installed, otherwise B could not work, and neither would A.devDependencies
are not installed transitively. E.g. we don't need to test B to test A, so B's testing dependencies can be left out.