Package is a term used by npm to denote tools that developers can use for their projects. This includes everything from libraries and frameworks such as jQuery and AngularJS to task runners such as Gulp.js. The packages will come in a folder typically called node_modules
, which will also contain a package.json
file. This file contains information regarding all the packages including any dependencies, which are additional modules needed to use a particular package.
Npm uses the command line to both install and manage packages, so users attempting to use npm should be familiar with basic commands on their operating system i.e.: traversing directories as well as being able to see the contents of directories.
Note that in order to install packages, you must have NPM installed.
The recommended way to install NPM is to use one of the installers from the Node.js download page. You can check to see if you already have node.js installed by running either the npm -v
or the npm version
command.
After installing NPM via the Node.js installer, be sure to check for updates. This is because NPM gets updated more frequently than the Node.js installer. To check for updates run the following command:
npm install npm@latest -g
To install one or more packages use the following:
npm install <package-name>
# or
npm i <package-name>...
# e.g. to install lodash and express
npm install lodash express
Note: This will install the package in the directory that the command line is currently in, thus it is important to check whether the appropriate directory has been chosen
If you already have a package.json
file in your current working directory and dependencies are defined in it, then npm install
will automatically resolve and install all dependencies listed in the file. You can also use the shorthand version of the npm install
command which is: npm i
If you want to install a specific version of a package use:
npm install <name>@<version>
# e.g. to install version 4.11.1 of the package lodash
npm install [email protected]
If you want to install a version which matches a specific version range use:
npm install <name>@<version range>
# e.g. to install a version which matches "version >= 4.10.1" and "version < 4.11.1"
# of the package lodash
npm install lodash@">=4.10.1 <4.11.1"
If you want to install the latest version use:
npm install <name>@latest
The above commands will search for packages in the central npm
repository at npmjs.com. If you are not looking to install from the npm
registry, other options are supported, such as:
# packages distributed as a tarball
npm install <tarball file>
npm install <tarball url>
# packages available locally
npm install <local path>
# packages available as a git repository
npm install <git remote url>
# packages available on GitHub
npm install <username>/<repository>
# packages available as gist (need a package.json)
npm install gist:<gist-id>
# packages from a specific repository
npm install --registry=http://myreg.mycompany.com <package name>
# packages from a related group of packages
# See npm scope
npm install @<scope>/<name>(@<version>)
# Scoping is useful for separating private packages hosted on private registry from
# public ones by setting registry for specific scope
npm config set @mycompany:registry http://myreg.mycompany.com
npm install @mycompany/<package name>
Usually, modules will be installed locally in a folder named node_modules
, which can be found in your current working directory. This is the directory require()
will use to load modules in order to make them available to you.
If you already created a package.json
file, you can use the --save
(shorthand -S
) option or one of its variants to automatically add the installed package to your package.json
as a dependency. If someone else installs your package, npm
will automatically read dependencies from the package.json
file and install the listed versions. Note that you can still add and manage your dependencies by editing the file later, so it's usually a good idea to keep track of dependencies, for example using:
npm install --save <name> # Install dependencies
# or
npm install -S <name> # shortcut version --save
# or
npm i -S <name>
In order to install packages and save them only if they are needed for development, not for running them, not if they are needed for the application to run, follow the following command:
npm install --save-dev <name> # Install dependencies for development purposes
# or
npm install -D <name> # shortcut version --save-dev
# or
npm i -D <name>
Some modules do not only provide a library for you to use, but they also provide one or more binaries which are intended to be used via the command line. Although you can still install those packages locally, it is often preferred to install them globally so the command-line tools can be enabled. In that case, npm
will automatically link the binaries to appropriate paths (e.g. /usr/local/bin/<name>
) so they can be used from the command line. To install a package globally, use:
npm install --global <name>
# or
npm install -g <name>
# or
npm i -g <name>
# e.g. to install the grunt command line tool
npm install -g grunt-cli
If you want to see a list of all the installed packages and their associated versions in the current workspace, use:
npm list
npm list <name>
Adding an optional name argument can check the version of a specific package.
Note: If you run into permission issues while trying to install an npm module globally, resist the temptation to issue a sudo npm install -g ...
to overcome the issue. Granting third-party scripts to run on your system with elevated privileges is dangerous. The permission issue might mean that you have an issue with the way npm
itself was installed. If you're interested in installing Node in sandboxed user environments, you might want to try using nvm.
If you have build tools, or other development-only dependencies (e.g. Grunt), you might not want to have them bundled with the application you deploy. If that's the case, you'll want to have it as a development dependency, which is listed in the package.json
under devDependencies
. To install a package as a development-only dependency, use --save-dev
(or -D
).
npm install --save-dev <name> // Install development dependencies which is not included in production
# or
npm install -D <name>
You will see that the package is then added to the devDependencies
of your package.json
.
To install dependencies of a downloaded/cloned node.js project, you can simply use
npm install
# or
npm i
npm will automatically read the dependencies from package.json
and install them.
If your internet access is through a proxy server, you might need to modify npm install commands that access remote repositories. npm uses a configuration file which can be updated via command line:
npm config set
You can locate your proxy settings from your browser's settings panel. Once you have obtained the proxy settings (server URL, port, username and password); you need to configure your npm configurations as follows.
$ npm config set proxy http://<username>:<password>@<proxy-server-url>:<port>
$ npm config set https-proxy http://<username>:<password>@<proxy-server-url>:<port>
username
, password
, port
fields are optional. Once you have set these, your npm install
, npm i -g
etc. would work properly.