The difference between npm install and npm update handling of package versions specified in package.json:
{
"name": "my-project",
"version": "1.0", // install update
"dependencies": { // ------------------
"already-installed-versionless-module": "*", // ignores "1.0" -> "1.1"
"already-installed-semver-module": "^1.4.3" // ignores "1.4.3" -> "1.5.2"
"already-installed-versioned-module": "3.4.1" // ignores ignores
"not-yet-installed-versionless-module": "*", // installs installs
"not-yet-installed-semver-module": "^4.2.1" // installs installs
"not-yet-installed-versioned-module": "2.7.8" // installs installs
}
}
Summary: The only big difference is that an already installed module with fuzzy versioning …
- gets ignored by
npm install - gets updated by
npm update
Additionally: install and update by default handle devDependencies differently
npm installwill install/update devDependencies unless--productionflag is addednpm updatewill ignore devDependencies unless--devflag is added
Why use npm install at all?
Because npm install does more when you look besides handling your dependencies in package.json.
As you can see in npm install you can …
- manually install node-modules
- set them as global (which puts them in the shell’s
PATH) usingnpm install -g <name> - install certain versions described by git tags
- install from a git url
- force a reinstall with
--force