176 lines
5.5 KiB
Markdown
176 lines
5.5 KiB
Markdown
---
|
|
title: npm
|
|
section: 1
|
|
description: javascript package manager
|
|
---
|
|
|
|
### Synopsis
|
|
|
|
```bash
|
|
npm
|
|
```
|
|
|
|
Note: This command is unaware of workspaces.
|
|
|
|
### Version
|
|
|
|
10.1.0
|
|
|
|
### Description
|
|
|
|
npm is the package manager for the Node JavaScript platform. It puts
|
|
modules in place so that node can find them, and manages dependency
|
|
conflicts intelligently.
|
|
|
|
It is extremely configurable to support a variety of use cases. Most
|
|
commonly, you use it to publish, discover, install, and develop node
|
|
programs.
|
|
|
|
Run `npm help` to get a list of available commands.
|
|
|
|
### Important
|
|
|
|
npm comes preconfigured to use npm's public registry at
|
|
https://registry.npmjs.org by default. Use of the npm public registry is
|
|
subject to terms of use available at
|
|
https://docs.npmjs.com/policies/terms.
|
|
|
|
You can configure npm to use any compatible registry you like, and even
|
|
run your own registry. Use of someone else's registry is governed by
|
|
their terms of use.
|
|
|
|
### Introduction
|
|
|
|
You probably got npm because you want to install stuff.
|
|
|
|
The very first thing you will most likely want to run in any node
|
|
program is `npm install` to install its dependencies.
|
|
|
|
You can also run `npm install blerg` to install the latest version of
|
|
"blerg". Check out [`npm install`](/commands/npm-install) for more
|
|
info. It can do a lot of stuff.
|
|
|
|
Use the `npm search` command to show everything that's available in the
|
|
public registry. Use `npm ls` to show everything you've installed.
|
|
|
|
### Dependencies
|
|
|
|
If a package lists a dependency using a git URL, npm will install that
|
|
dependency using the [`git`](https://github.com/git-guides/install-git)
|
|
command and will generate an error if it is not installed.
|
|
|
|
If one of the packages npm tries to install is a native node module and
|
|
requires compiling of C++ Code, npm will use
|
|
[node-gyp](https://github.com/nodejs/node-gyp) for that task.
|
|
For a Unix system, [node-gyp](https://github.com/nodejs/node-gyp)
|
|
needs Python, make and a buildchain like GCC. On Windows,
|
|
Python and Microsoft Visual Studio C++ are needed. For more information
|
|
visit [the node-gyp repository](https://github.com/nodejs/node-gyp) and
|
|
the [node-gyp Wiki](https://github.com/nodejs/node-gyp/wiki).
|
|
|
|
### Directories
|
|
|
|
See [`folders`](/configuring-npm/folders) to learn about where npm puts
|
|
stuff.
|
|
|
|
In particular, npm has two modes of operation:
|
|
|
|
* local mode:
|
|
npm installs packages into the current project directory, which
|
|
defaults to the current working directory. Packages install to
|
|
`./node_modules`, and bins to `./node_modules/.bin`.
|
|
* global mode:
|
|
npm installs packages into the install prefix at
|
|
`$npm_config_prefix/lib/node_modules` and bins to
|
|
`$npm_config_prefix/bin`.
|
|
|
|
Local mode is the default. Use `-g` or `--global` on any command to
|
|
run in global mode instead.
|
|
|
|
### Developer Usage
|
|
|
|
If you're using npm to develop and publish your code, check out the
|
|
following help topics:
|
|
|
|
* json:
|
|
Make a package.json file. See
|
|
[`package.json`](/configuring-npm/package-json).
|
|
* link:
|
|
Links your current working code into Node's path, so that you don't
|
|
have to reinstall every time you make a change. Use [`npm
|
|
link`](/commands/npm-link) to do this.
|
|
* install:
|
|
It's a good idea to install things if you don't need the symbolic
|
|
link. Especially, installing other peoples code from the registry is
|
|
done via [`npm install`](/commands/npm-install)
|
|
* adduser:
|
|
Create an account or log in. When you do this, npm will store
|
|
credentials in the user config file.
|
|
* publish:
|
|
Use the [`npm publish`](/commands/npm-publish) command to upload your
|
|
code to the registry.
|
|
|
|
#### Configuration
|
|
|
|
npm is extremely configurable. It reads its configuration options from
|
|
5 places.
|
|
|
|
* Command line switches:
|
|
Set a config with `--key val`. All keys take a value, even if they
|
|
are booleans (the config parser doesn't know what the options are at
|
|
the time of parsing). If you do not provide a value (`--key`) then
|
|
the option is set to boolean `true`.
|
|
* Environment Variables:
|
|
Set any config by prefixing the name in an environment variable with
|
|
`npm_config_`. For example, `export npm_config_key=val`.
|
|
* User Configs:
|
|
The file at `$HOME/.npmrc` is an ini-formatted list of configs. If
|
|
present, it is parsed. If the `userconfig` option is set in the cli
|
|
or env, that file will be used instead.
|
|
* Global Configs:
|
|
The file found at `./etc/npmrc` (relative to the global prefix will be
|
|
parsed if it is found. See [`npm prefix`](/commands/npm-prefix) for
|
|
more info on the global prefix. If the `globalconfig` option is set
|
|
in the cli, env, or user config, then that file is parsed instead.
|
|
* Defaults:
|
|
npm's default configuration options are defined in
|
|
`lib/utils/config/definitions.js`. These must not be changed.
|
|
|
|
See [`config`](/using-npm/config) for much much more information.
|
|
|
|
### Contributions
|
|
|
|
Patches welcome!
|
|
|
|
If you would like to help, but don't know what to work on, read the
|
|
[contributing
|
|
guidelines](https://github.com/npm/cli/blob/latest/CONTRIBUTING.md) and
|
|
check the issues list.
|
|
|
|
### Bugs
|
|
|
|
When you find issues, please report them:
|
|
<https://github.com/npm/cli/issues>
|
|
|
|
Please be sure to follow the template and bug reporting guidelines.
|
|
|
|
### Feature Requests
|
|
|
|
Discuss new feature ideas on our discussion forum:
|
|
|
|
* <https://github.com/npm/feedback>
|
|
|
|
Or suggest formal RFC proposals:
|
|
|
|
* <https://github.com/npm/rfcs>
|
|
|
|
### See Also
|
|
|
|
* [npm help](/commands/npm-help)
|
|
* [package.json](/configuring-npm/package-json)
|
|
* [npmrc](/configuring-npm/npmrc)
|
|
* [npm config](/commands/npm-config)
|
|
* [npm install](/commands/npm-install)
|
|
* [npm prefix](/commands/npm-prefix)
|
|
* [npm publish](/commands/npm-publish)
|