NPM-注册表
描述
为了按名称和版本解析包,npm与一个注册网站进行对话,该网站实现了CommonJS Package Registry
规范以读取包信息。
npm配置为默认使用https://registry.npmjs.org上的npm,Inc。的公共注册表 。使用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 由包的范围决定(请参阅参考资料 npm-scope
)。如果未指定范围,则使用默认注册表,该注册表由registryconfig参数提供。见npm-config
, npmrc
以及npm-config
更多关于管理 NPM 的配置。
npm是否将有关我的任何信息发送回注册表?
是。
在发出注册表请求时,npm 会添加两个标题,其中包含有关您的环境的信息:
Npm-Scope
- 如果项目是作用域的,则此标题将包含其范围。在未来,npm 希望构建使用此信息的注册表功能,以便您自定义组织的体验。Npm-In-CI
- 如果 npm 认为此安装在连续集成环境中运行,则设置为 “true”,否则为 “false” 。:这是通过寻找以下环境变量检测CI
,TDDIUM
,JENKINS_URL
,bamboo.buildKey
。如果您想了解更多信息,您可能会发现最初的PR 有趣。这用于收集有关人类如何使用 npm 与构建农场的更好指标。
npm注册表不会尝试将这些标头中的信息与可能在相同请求中使用的任何经过身份验证的帐户相关联。
我可以运行自己的私人注册表吗?
是!
最简单的方法是复制沙发数据库,并使用相同(或类似)的设计文档来实现API。
如果您从官方CouchDB设置连续复制,然后将内部CouchDB设置为注册表配置,那么除了私有软件包之外,您还可以读取任何已发布的软件包,并且默认情况下仅在内部发布。
如果您希望发布一个供全世界查看的包,您可以简单地覆盖该命令的--registry
选项publish
。
我不希望我的包在官方注册表中发布。它是私人的。
"private": true
在package.json中设置以防止它被发布,或 "publishConfig":{"registry":"http://my-internal-registry.local"}
强制它仅发布到您的内部注册表。
有关package.json
package.json文件内容的更多信息,请参阅参考资料。
你会从我的注册表复制到公共注册表吗?
不。如果您希望公开内容,请使用npm将其发布到公共注册表中。除此之外,没有什么安全保障。
我是否必须使用couchdb来构建一个npm可以与之交谈的注册表?
不,但这更容易。基本上,是的,你这样做,或者你必须有效地实现整个CouchDB API。
是否有网站或其他东西可以看到包文档等?
是的,请访问https://www.npmjs.com/
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com