reggi/dev-engines
@reggi/path-to-regexp
dependabot/npm_and_yarn/main/copy-to-clipboard-4.0.2
dependabot/npm_and_yarn/main/eslint-10.4.0
dependabot/npm_and_yarn/main/npmcli/eslint-config-7.0.0
dependabot/npm_and_yarn/main/proc-log-7.0.0
dependabot/npm_and_yarn/npm_and_yarn-826852524d
dependabot/npm_and_yarn/npm_and_yarn-ab9a7f4bc2
deprecate-totp-2fa
dhei/classic-tokens
gat-bypass-2fa-docs
jpg619/fix-accessibility-content-flow
jpg619/version-bump-tar-2
kartykp/gat-bypass-2fa-docs
kartykp/upgrade-path-to-regex
main
maitxn/version-bump-tar
patch-1
reggi/cache-based-on-version
reggi/dev-engines
reggi/fix-transform-prettier
reggi/overrides
update-search-sensitivity
| 1 | --- |
| 2 | title: npm |
| 3 | section: 1 |
| 4 | description: javascript package manager |
| 5 | github_repo: npm/cli |
| 6 | github_branch: release/v9 |
| 7 | github_path: docs/lib/content/commands/npm.md |
| 8 | redirect_from: |
| 9 | - /cli-documentation/v9/cli-commands/npm |
| 10 | - /cli-documentation/v9/commands/npm |
| 11 | - /cli-documentation/v9/npm |
| 12 | - /cli/v9/cli-commands/npm |
| 13 | - /cli/v9/npm |
| 14 | --- |
| 15 | |
| 16 | ### Synopsis |
| 17 | |
| 18 | ```bash |
| 19 | npm |
| 20 | ``` |
| 21 | |
| 22 | Note: This command is unaware of workspaces. |
| 23 | |
| 24 | ### Version |
| 25 | |
| 26 | 9.9.3 |
| 27 | |
| 28 | ### Description |
| 29 | |
| 30 | 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. |
| 31 | |
| 32 | It is extremely configurable to support a variety of use cases. Most commonly, you use it to publish, discover, install, and develop node programs. |
| 33 | |
| 34 | Run `npm help` to get a list of available commands. |
| 35 | |
| 36 | ### Important |
| 37 | |
| 38 | 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. |
| 39 | |
| 40 | 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. |
| 41 | |
| 42 | ### Introduction |
| 43 | |
| 44 | You probably got npm because you want to install stuff. |
| 45 | |
| 46 | The very first thing you will most likely want to run in any node program is `npm install` to install its dependencies. |
| 47 | |
| 48 | You can also run `npm install blerg` to install the latest version of "blerg". Check out [`npm install`](/cli/v9/commands/npm-install) for more info. It can do a lot of stuff. |
| 49 | |
| 50 | Use the `npm search` command to show everything that's available in the public registry. Use `npm ls` to show everything you've installed. |
| 51 | |
| 52 | ### Dependencies |
| 53 | |
| 54 | 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. |
| 55 | |
| 56 | 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). |
| 57 | |
| 58 | ### Directories |
| 59 | |
| 60 | See [`folders`](/cli/v9/configuring-npm/folders) to learn about where npm puts stuff. |
| 61 | |
| 62 | In particular, npm has two modes of operation: |
| 63 | |
| 64 | - 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`. |
| 65 | - global mode: npm installs packages into the install prefix at `$npm_config_prefix/lib/node_modules` and bins to `$npm_config_prefix/bin`. |
| 66 | |
| 67 | Local mode is the default. Use `-g` or `--global` on any command to run in global mode instead. |
| 68 | |
| 69 | ### Developer Usage |
| 70 | |
| 71 | If you're using npm to develop and publish your code, check out the following help topics: |
| 72 | |
| 73 | - json: Make a package.json file. See [`package.json`](/cli/v9/configuring-npm/package-json). |
| 74 | - 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`](/cli/v9/commands/npm-link) to do this. |
| 75 | - 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`](/cli/v9/commands/npm-install) |
| 76 | - adduser: Create an account or log in. When you do this, npm will store credentials in the user config file. |
| 77 | - publish: Use the [`npm publish`](/cli/v9/commands/npm-publish) command to upload your code to the registry. |
| 78 | |
| 79 | #### Configuration |
| 80 | |
| 81 | npm is extremely configurable. It reads its configuration options from 5 places. |
| 82 | |
| 83 | - 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`. |
| 84 | - Environment Variables: Set any config by prefixing the name in an environment variable with `npm_config_`. For example, `export npm_config_key=val`. |
| 85 | - 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. |
| 86 | - Global Configs: The file found at `./etc/npmrc` (relative to the global prefix will be parsed if it is found. See [`npm prefix`](/cli/v9/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. |
| 87 | - Defaults: npm's default configuration options are defined in `lib/utils/config/definitions.js`. These must not be changed. |
| 88 | |
| 89 | See [`config`](/cli/v9/using-npm/config) for much much more information. |
| 90 | |
| 91 | ### Contributions |
| 92 | |
| 93 | Patches welcome! |
| 94 | |
| 95 | 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. |
| 96 | |
| 97 | ### Bugs |
| 98 | |
| 99 | When you find issues, please report them: [https://github.com/npm/cli/issues](https://github.com/npm/cli/issues) |
| 100 | |
| 101 | Please be sure to follow the template and bug reporting guidelines. |
| 102 | |
| 103 | ### Feature Requests |
| 104 | |
| 105 | Discuss new feature ideas on our discussion forum: |
| 106 | |
| 107 | - [https://github.com/npm/feedback](https://github.com/npm/feedback) |
| 108 | |
| 109 | Or suggest formal RFC proposals: |
| 110 | |
| 111 | - [https://github.com/npm/rfcs](https://github.com/npm/rfcs) |
| 112 | |
| 113 | ### See Also |
| 114 | |
| 115 | - [npm help](/cli/v9/commands/npm-help) |
| 116 | - [package.json](/cli/v9/configuring-npm/package-json) |
| 117 | - [npmrc](/cli/v9/configuring-npm/npmrc) |
| 118 | - [npm config](/cli/v9/commands/npm-config) |
| 119 | - [npm install](/cli/v9/commands/npm-install) |
| 120 | - [npm prefix](/cli/v9/commands/npm-prefix) |
| 121 | - [npm publish](/cli/v9/commands/npm-publish) |