注册表

JavaScript 包注册表

描述

为了按名称和版本解析包,npm 与实现 CommonJS 包注册表规范的注册表网站进行对话,以读取包信息。

默认情况下,npm 配置为使用 npm, Inc. 在 https://registry.npmjs.org 的公共注册表。 使用 npm 公共注册表须遵守 https://www.npmjs.com/policies/terms 提供的使用条款。

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

npm 的包注册表实现也支持多个写入 API,以允许发布包和管理用户账户信息。

npm 公共注册表由 CouchDB 数据库提供支持,其中 https://skimdb.npmjs.com/registry 有一个公共镜像。 couchapp 的代码可在 https://github.com/npm/npm-registry-couchapp 获得。

使用的注册表 URL 由包的范围决定(请参阅 scope。如果未指定范围,则使用默认注册表,它由 registry 配置参数提供。有关管理 npm 配置的更多信息,请参阅 npm confignpmrcconfig .

npm 是否会将有关我的任何信息发送回注册表?

是的。

当向注册表发出请求时,npm 会添加两个标头,其中包含有关你的环境的信息:

  • Npm-Scope – 如果你的项目有范围,则此标头将包含其范围。 在未来,npm 希望构建使用此信息的注册表功能,以允许你为你的组织定制你的体验。
  • Npm-In-CI – 如果 npm 认为此安装在持续集成环境中运行,则设置为 "true",否则设置为 "false"。 这是通过查找以下环境变量来检测的:CITDDIUMJENKINS_URLbamboo.buildKey。 如果你想了解更多信息,你可能会发现 原始 PR 很有趣。 这用于收集关于人类如何使用 npm 与构建农场的更好指标。

npm 注册表不会尝试将这些标头中的信息与可能在相同请求中使用的任何经过身份验证的账户相关联。

我可以运行自己的私有注册表吗?

是的!

最简单的方法是复制沙发数据库,​​并使用相同(或相似)的设计文档来实现 API。

如果你从官方 CouchDB 设置连续复制,然后将你的内部 CouchDB 设置为注册表配置,那么你将能够读取任何已发布的包,以及你的私有包,并且默认情况下只会在内部发布。

如果你想发布一个包让全世界都看到,你可以简单地覆盖那个 publish 命令的 --registry 选项。

我不希望我的包在官方注册表中发布。它是私有的。

在你的 package.json 中设置 "private": true 以防止它被发布,或者 "publishConfig":{"registry":"http://my-internal-registry.local"} 强制它只发布到你的内部注册表。

有关 package.json 文件中内容的更多信息,请参阅 package.json

你会从我的注册表复制到公共注册表吗?

不。 如果你希望公开内容,请使用 npm 将它们发布到公共注册表中。 否则,任何一点安全都将一文不值。

我必须使用 couchdb 来构建一个 npm 可以与之通信的注册表吗?

不,但它更容易。 基本上,是的,你这样做,或者无论如何你必须有效地实现整个 CouchDB API。

是否有网站或其他东西可以查看包文档等?

是的,前往 https://www.npmjs.com/

也可以看看

npm 中文网 - 粤ICP备13048890号