# npm

javascript 包管理器

# 版本

8.19.1

# 描述

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

它具有极强的可配置性,可以支持各种用例。最常见的是,您使用它来发布、发现、安装和开发节点程序。

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

# 重要

npm 预设为默认使用 npm 的公共注册中心 https://registry.npmjs.org。npm 公共注册中心的使用受 https://docs.npmjs.com/policies/terms 提供的使用条款的约束。

您可以将 npm 配置为使用您喜欢的注册中心,甚至可以运行您自己的注册中心。使用他人的注册中心受其使用条款的约束。

# 介绍

你想要安装的东西可能会从 npm 得到。

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

您也可以运行 npm install blerg 来安装 "blerg" 的最新版本。查看 npm install 了解更多信息。它可以做很多事情。

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

# 依赖项

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

如果 npm 试图安装的其中一个包是一个本地节点模块,并且需要编译 c++ 代码,npm 将使用 node-gyp 完成该任务。对于 Unix 系统,node-gyp 需要 PythonmakeGCC 这样的构建链。在 Windows 上,需要 PythonMicrosoft 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$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 格式的配置列表。如果存在,则解析它。如果在 cli 或 env 中设置了 userconfig 选项,则将使用该文件。
  • 全局配置: 如果找到位于 ./etc/npmrc(相对于全局前缀)的文件,将对其进行分析。有关全局前缀的更多信息,请参阅 npm prefix。如果在cli、env或用户配置中设置了 globalconfig 选项,则将对该文件进行分析。
  • 默认值: Npm 的默认配置选项定义在 lib/utils/config-defs.js 中。这些都不能改变。

有关 config 更多信息,请参阅 config 配置。

# 贡献

欢迎补丁!

如果您想提供帮助,但不知道该做什么,请阅读贡献指南并检查问题列表。

# 错误

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

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

# 功能请求

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

https://github.com/npm/feedback

或者建议正式的 RFC 提案:

https://github.com/npm/rfcs

Last Updated: 4/25/2023, 9:49:29 AM