Learn to manage and update all the npm dependencies saved in the package.json file, to their latest available version.
npm is the package manager for JavaScript.
Requirements
Install Node.js on your machine.
If you install a package using npm install <packagename>
, the latest available version of the package is downloaded and store in the node_modules
folder, and a corresponding entry is added to the package.json
and package-lock.json
files that are present in your current folder.
Some essential additional flags for npm install
aliases: npm i
, npm add
- -P, –save-prod: Package will appear in your dependencies.
- -d, –save: Package will appear in your dependencies.
- -D, –save-dev: Package will appear in your devDependencies.
- -E, –save-exact: Saved dependencies will be configured with an exact version rather than using npm’s default semver range operator.
- –no-save: Prevents saving to dependencies.
To stable our project with changes in dependencies version, it is necessary to learn to manage the exact dependency version that you need in your project — which I am gonna discuss below.
Updating node dependencies
In your package.json
you can tag each dependency with a range of versions to install then type npm install
to install all the listed dependencies at the given versions:
Only install 2.6.1
:
{
"dependencies": {
"package-name": "2.6.1"
}
}
Prefix with ~
to install the latest patch version 2.6.x
:
As 2.6.1
, 2.6.2
, 2.6.3
, etc versions are released, npm install
will install the latest version of those. If 2.7.0
is release, it will not install that version (generally a good strategy as it may contain breaking changes).
{
"dependencies": {
"package-name": "~2.6.1"
}
}
Prefix with ^
to install the latest patch version 2.x.x
:
It will update you to the most recent major version (the first number). ^2.6.1
will match any 2.x.x
release including 2.7.0
, but will hold off on 3.0.0
.
{
"dependencies": {
"package-name": "^2.6.1"
}
}
Explicitly set the range:
You can use >
, <
, <=
, >=
to explicitly set the version range. Another good option for custom ranges or if you would like to be explicit with your version ranges. The follow will install every version greater or equal than 2.6.1
but less than 7.0.0
:
{
"dependencies": {
"package-name": ">= 2.6.1 < 7.0.0"
}
}
Always install the latest with *
:
Or if you just always want the latest version use *
:
{
"dependencies": {
"package-name": "*"
}
}
See more about version ranges in the npm docs or npm’s semantic versioning parser.
npm outdated
If you would like to see which of your dependencies are out of date, use npm outdated
: see npm docs for more info.
npm update
Use npm update
to update all your dependencies to the latest versions. Or npm update packagename anotherpackage
to update specific packages to the latest version.
Essential npm commands
Creating a package.json
file
npm init
- create package.json
file initating a command line questionnaire
npm init --yes
or npm init -y
- create a package.json
file and fill in default values
Managing global packages
npm ls -g --depth=0
- list out global installed packages
npm uninstall -g [<name> [<name ...]]
- uninstall global package(s)
npm outdated --global
- check for outdated global installed packages
Managing project packages
npm list
or npm ls
(preferred shorthand) - list out currently installed npm packages
npm ls --depth=0
- only draws out the top of the dependency tree
npm install
- will install both “dependencies” and “devDependencies”
npm install --production
- will only install “dependencies”
npm install --dev
- will only install “devDependencies”
npm outdated
- check for outdated packages
npm prune [<name> [<name ...]]
- removes “extraneous” packages
npm where
- show npm installed path
npm cache clean
- clean npm cache
npm run-script <script-name>
or for short npm run <script-name>
- run scripts from package.json
Execute npm package binaries with npx
npx
- a tool for executing Node packages.
From npm@5.2.0, npm ships with npx package which lets you run commands from a local node_modules/.bin
or from a central cache.
Simply run:
npx [options] <command>[@version] [command-arg]...
By default, npx will check whether <command>
exists in $PATH
, or in the local project binaries, and execute that.
For npm < 5.2.0, you can install npx package manually by running the following command:
npm install -g npx
Resources
How to update our projects all npm packages to latest version
If we update a package using npm update
command, npm will update the minor and patch versions in our project node_modules
folder but not in our package.json
because of versioning rules like ~2.6.1
or ^2.6.1
.
To update all packages version number in package.json
file to its latest (major) stable version, we need to install a new global package called npm-check-updates.
Installation:
npm install -g npm-check-updates
On most flavors of Linux, macOS, and Bash on Ubuntu on Windows (WSL), add
sudo
beforenpm
command to install global npm package.
To check our project package.json
file:
ncu
Upgrade a project’s package version in package.json
file:
ncu -u
Now, run npm install
to install new versions (update installed packages and package-lock.json
):
npm install
To check global packages:
ncu -g
You may also want to consider npm-check with similar purpose, but different features.