table of contents
other versions
- jessie 1.4.21+ds-2
- testing 5.8.0+ds6-3
- stretch-backports 5.8.0+ds6-2~bpo9+1
- unstable 5.8.0+ds6-4
other sections
NPM-INSTALL(1) | NPM-INSTALL(1) |
NAME¶
npm-install - Install a packageSYNOPSIS¶
npm install (with no args in a package dir) npm install <tarball file> npm install <tarball url> npm install <folder> npm install <name> [--save|--save-dev|--save-optional] [--save-exact] npm install <name>@<tag> npm install <name>@<version> npm install <name>@<version range> npm i (with any of the previous argument usage)
DESCRIPTION¶
npm help This command installs a package, and any packages that it depends on. If the package has a shrinkwrap file, the installation of dependencies will be driven by that. See npm-shrinkwrap. A package is:- •
- a) a folder containing a program described by a package.json file
- •
- b) a gzipped tarball containing (a)
- •
- c) a url that resolves to (b)
- •
- d) a <name>@<version> that is published on the registry (npm help see npm-registry) with (c)
- •
- e) a <name>@<tag> that points to (d)
- •
- f) a <name> that has a "latest" tag satisfying (e)
- •
- g) a <git remote url> that resolves to (b)
- •
- npm install (in package directory, no arguments):
- Install the dependencies in the local node_modules folder.
- In global mode (ie, with -g or --global appended to the command), it installs the current package context (ie, the current working directory) as a global package.
- By default, npm install will install all modules listed as dependencies. With the --production flag, npm will not install modules listed in devDependencies.
- •
- npm install <folder>:
- Install a package that is sitting in a folder on the filesystem.
- •
- npm install <tarball file>:
- Install a package that is sitting on the filesystem. Note: if you just want to link a dev directory into your npm root, you can do this more easily by using npm link.
- Example:
-
npm install ./package.tgz
- •
- npm install <tarball url>:
- Fetch the tarball url, and then install it. In order to distinguish between this and other options, the argument must start with "http://" or "https://"
- Example:
- •
- npm install <name> [--save|--save-dev|--save-optional]:
- Do a <name>@<tag> install, where <tag> is the "tag" config. (npm help See npm-config.)
- In most cases, this will install the latest version of the module published on npm.
- Example:
-
npm install sax
- npm install takes 3 exclusive, optional flags which save or update the package version in your main package.json:
- •
- --save: Package will appear in your dependencies.
- •
- --save-dev: Package will appear in your devDependencies.
- •
- --save-optional: Package will appear in your optionalDependencies.
- When using any of the above options to save dependencies to your package.json, there is an additional, optional flag:
- •
- --save-exact: Saved dependencies will be configured with an exact version rather than using npm´s default semver range operator.
- Examples:
-
npm install sax --save npm install node-tap --save-dev npm install dtrace-provider --save-optional npm install readable-stream --save --save-exact
- Note: If there is a file or folder named <name> in the current working directory, then it will try to install that, and only try to fetch the package by name if it is not valid.
- •
- npm install <name>@<tag>:
- Install the version of the package that is referenced by the specified tag. If the tag does not exist in the registry data for that package, then this will fail.
- Example:
-
npm install sax@latest
- •
- npm install <name>@<version>:
- Install the specified version of the package. This will fail if the version has not been published to the registry.
- Example:
-
npm install sax@0.1.1
- •
- npm install <name>@<version range>:
- npm help Install a version of the package matching the specified version range. This will follow the same rules for resolving dependencies described in package.json.
- Note that most version ranges must be put in quotes so that your shell will treat it as a single argument.
- Example:
-
npm install sax@">=0.1.0 <0.2.0"
- •
- npm install <git remote url>:
- Install a package by cloning a git remote url. The format of the git url is:
-
<protocol>://[<user>@]<hostname><separator><path>[#<commit-ish>]
- <protocol> is one of git, git+ssh, git+http, or git+https. If no <commit-ish> is specified, then master is used.
- Examples:
-
git+ssh://git@github.com:npm/npm.git#v1.0.27 git+https://isaacs@github.com/npm/npm.git git://github.com/npm/npm.git#v1.0.27
-
npm install sax@">=0.1.0 <0.2.0" bench supervisor
-
npm install sax --force
ALGORITHM¶
To install a package, npm uses the following algorithm:-
install(where, what, family, ancestors) fetch what, unpack to <where>/node_modules/<what> for each dep in what.dependencies resolve dep to precise version for each dep@version in what.dependencies not in <where>/node_modules/<what>/node_modules/* and not in <family> add precise version deps to <family> install(<where>/node_modules/<what>, dep, family)
-
A +-- B `-- C `-- D
Limitations of npm´s Install Algorithm¶
There are some very rare and pathological edge-cases where a cycle can cause npm to try to install a never-ending tree of packages. Here is the simplest case:-
A -> B -> A´ -> B´ -> A -> B -> A´ -> B´ -> A -> ...
SEE ALSO¶
- •
- npm help folders
- •
- npm help update
- •
- npm help link
- •
- npm help rebuild
- •
- npm help scripts
- •
- npm help build
- •
- npm help config
- •
- npm help config
- •
- npm help npmrc
- •
- npm help registry
- •
- npm help tag
- •
- npm help rm
- •
- npm help shrinkwrap
August 2014 |