目录
注册表
选择 CLI 版本
目录
描述
为了通过名称和版本解析包,npm 会与实现 CommonJS 包注册表规范以读取包信息的注册表网站进行通信。
默认情况下,npm 配置为使用位于 https://registry.npmjs.org 的 **npm 公共注册表**。使用 npm 公共注册表受位于 https://docs.npmjs.net.cn/policies/terms 的使用条款的约束。
您可以配置 npm 使用任何兼容的注册表,甚至运行您自己的注册表。使用其他人的注册表可能受其使用条款的约束。
npm 的包注册表实现也支持多个写入 API,以允许发布包和管理用户帐户信息。
npm 公共注册表由 CouchDB 数据库提供支持,该数据库在 https://skimdb.npmjs.com/registry 处有一个公共镜像。
使用的注册表 URL 由包的范围决定(参见 scope
。如果未指定范围,则使用默认注册表,该注册表由 registry
配置 参数提供。参见 npm config
、npmrc
和 config
以了解有关管理 npm 配置的更多信息。身份验证配置(如身份验证令牌和证书)专门配置为对单个注册表进行范围限定。参见 与身份验证相关的配置
当在 package-lock 或 shrinkwrap 中使用默认注册表时,它具有“当前配置的注册表”的特殊含义。如果您在使用默认注册表时创建锁定文件,则可以切换到另一个注册表,npm 将从新注册表安装包,但如果您在使用自定义注册表时创建锁定文件,则即使您切换到另一个注册表,包也会从该注册表安装。
npm 是否会将有关我的任何信息发送回注册表?
是的。
当向注册表发出请求时,npm 会添加两个包含有关您的环境信息的标头
Npm-Scope
– 如果您的项目有范围,则此标头将包含其范围。将来,npm 希望构建使用此信息的注册表功能,以允许您为您的组织定制体验。Npm-In-CI
– 如果 npm 认为此安装在持续集成环境中运行,则设置为“true”,否则设置为“false”。这是通过查找以下环境变量来检测的:CI
、TDDIUM
、JENKINS_URL
、bamboo.buildKey
。如果您想了解更多信息,您可能会发现 原始 PR 很有趣。这用于更好地收集有关 npm 如何被人类使用(与构建农场相比)的指标。
npm 注册表不会尝试将这些标头中的信息与可能在同一请求中使用的任何经过身份验证的帐户相关联。
如何阻止我的包发布到官方注册表?
在您的 package.json
中设置 "private": true
以阻止其完全发布,或者 "publishConfig":{"registry":"http://my-internal-registry.local"}
以强制其仅发布到您的内部/私有注册表。
参见 package.json
以了解有关 package.json 文件中内容的更多信息。