npm install vs. update - what's the difference?
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 install
will install/update devDependencies unless--production
flag is addednpm update
will ignore devDependencies unless--dev
flag 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
npm install installs all modules that are listed on package.json
file and their dependencies.
npm update updates all packages in the node_modules
directory and their dependencies.
npm install express installs only the express module and its dependencies.
npm update express updates express module (starting with [email protected], it doesn't update its dependencies).
So updates are for when you already have the module and wish to get the new version.
In most cases, this will install the latest version of the module published on npm.
npm install express --save
or better to upgrade module to latest version use:
npm install express@latest --save --force
--save
: Package will appear in your dependencies.
More info: npm-install