npm

javascript 包管理器

选择 CLI 版本

概要

npm

注意:此命令不知道工作区。

版本

10.5.2

描述

npm 是 Node JavaScript 平台的包管理器。它将模块放置到位,以便 node 可以找到它们,并智能地管理依赖冲突。

它可以高度配置以支持各种用例。最常见的是,您使用它来发布、发现、安装和开发 node 程序。

运行 npm help 以获取可用命令列表。

重要

npm 预先配置为默认使用 npm 的公共注册表 https://registry.npmjs.org。使用 npm 公共注册表受 https://docs.npmjs.net.cn/policies/terms 中提供的使用条款约束。

您可以配置 npm 以使用您喜欢的任何兼容注册表,甚至运行您自己的注册表。使用其他人的注册表受其使用条款约束。

简介

您可能获得了 npm 因为您想安装东西。

您在任何 node 程序中最可能想运行的第一件事是 npm install 以安装其依赖项。

您也可以运行 npm install blerg 以安装最新版本的“blerg”。查看 npm install 以获取更多信息。它可以做很多事情。

使用 npm search 命令显示公共注册表中可用的所有内容。使用 npm ls 显示您已安装的所有内容。

依赖项

如果一个包使用 git URL 列出依赖项,npm 将使用 git 命令安装该依赖项,如果未安装,则会生成错误。

如果 npm 尝试安装的包之一是本地 node 模块并且需要编译 C++ 代码,npm 将使用 node-gyp 来执行该任务。对于 Unix 系统,node-gyp 需要 Python、make 和像 GCC 这样的构建链。在 Windows 上,需要 Python 和 Microsoft Visual Studio C++。有关更多信息,请访问 node-gyp 存储库node-gyp Wiki

目录

查看 folders 以了解 npm 将内容放在哪里。

特别是,npm 有两种操作模式

  • 本地模式:npm 将包安装到当前项目目录中,默认情况下为当前工作目录。包安装到 ./node_modules,bin 安装到 ./node_modules/.bin
  • 全局模式:npm 将包安装到 $npm_config_prefix/lib/node_modules 处的安装前缀,并将 bin 安装到 $npm_config_prefix/bin

本地模式是默认模式。在任何命令上使用 -g--global 而不是在全局模式下运行。

开发者使用

如果您使用 npm 开发和发布代码,请查看以下帮助主题

  • json:创建一个 package.json 文件。查看 package.json
  • link:将您当前的工作代码链接到 Node 的路径,这样您就不必在每次更改时都重新安装。使用 npm link 来执行此操作。
  • install:如果您不需要符号链接,最好安装东西。特别是,从注册表安装其他人的代码是通过 npm install 完成的
  • adduser:创建帐户或登录。当您执行此操作时,npm 将凭据存储在用户配置文件中。
  • publish:使用 npm publish 命令将您的代码上传到注册表。

配置

npm 可以高度配置。它从 5 个地方读取其配置选项。

  • 命令行开关:使用 --key val 设置配置。所有键都需要一个值,即使它们是布尔值(配置解析器在解析时不知道选项是什么)。如果您不提供值 (--key),则该选项将设置为布尔值 true
  • 环境变量:通过在环境变量中以 npm_config_ 为前缀来设置任何配置。例如,export npm_config_key=val
  • 用户配置:$HOME/.npmrc 处的文件是一个 ini 格式的配置列表。如果存在,它将被解析。如果 userconfig 选项在 cli 或 env 中设置,则将使用该文件。
  • 全局配置:如果找到位于 ./etc/npmrc(相对于全局前缀)的文件,则会解析该文件。有关全局前缀的更多信息,请参阅 npm prefix。如果在 cli、环境或用户配置中设置了 globalconfig 选项,则会解析该文件。
  • 默认值:npm 的默认配置选项定义在 lib/utils/config/definitions.js 中。这些选项不可更改。

有关更多信息,请参阅 config

贡献

欢迎补丁!

如果您想帮忙,但不知道该从哪里入手,请阅读 贡献指南 并查看问题列表。

错误

如果您发现问题,请报告它们:https://github.com/npm/cli/issues

请务必遵循模板和错误报告指南。

功能请求

在我们的讨论论坛上讨论新功能想法

或建议正式的 RFC 提案

另请参阅