阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      NPM 包注册

      本文的功能

      JavaScript 软件包注册表

      说明

      要按名称和版本解析软件包,npm 会与一个注册网站进行对话,该网站实施 CommonJS Package Registry 规范以读取软件包信息。

      npm 默认配置为使用 npm,Inc.的公共注册表 https://registry.npmjs.org

      使用 npm 公共注册表必须遵守 https://www.npmjs.com/policies/terms 上的使用条款。

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

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

      npm 公共注册表由 CouchDB 数据库提供动力,该数据库在 https://skimdb.npmjs.com/registry 上具有公共镜像 。

      该沙发应用程序的代码可在 https://github.com/npm/npm-registry-couchapp 中获得。

      所使用的注册表 URL 由包的范围确定(请参阅参考资料 npm-scope)。如果未指定范围,则使用默认注册表,该注册表由 registryconfig 参数提供。见 npm config , npmrc 以及[npm config](/api/npm/cli/npm-config.html) 更多关于管理 NPM 的配置。

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

      是。

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

      Npm-Scope–如果您的项目是作用域,则此标头将包含其作用域。将来,npm 希望构建使用此信息的注册表功能,以允许您自定义组织的体验。

      Npm-In-CI–如果 npm 认为此安装正在持续集成环境中运行,则设置为“ true”,否则设置为“ false”。:这是通过寻找以下环境变量检测 CI,TDDIUM, JENKINS_URL,bamboo.buildKey。如果您想了解更多信息,您可能会发现原始的 PR 很有趣。

      与构建农场相比,这用于收集关于人类如何使用 npm 的更好指标。

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

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

      是!

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

      如果您从官方 CouchDB 设置了连续复制,然后将内部 CouchDB 设置为注册表配置,那么除了私有包之外,您还可以读取任何已发布的包,并且默认情况下仅在内部发布。

      如果然后要发布一个程序包供全世界查看,则可以简单地覆盖该命令的–registry 选项 publish。

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

      "private": true在您的 package.json 中进行设置,以完全禁止发布它,或"publishConfig":{"registry":"http://my-internal-registry.local"} 强制将其仅发布到内部注册表。

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

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

      否。如果您希望公开所有内容,请使用 npm 将其发布到公共注册表中。否则,没有什么安全保障。

      我是否必须使用沙发床来构建 npm 可以与之交谈的注册表?

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

      是否有网站或软件包文档之类的东西?

      是的,转到 https://www.npmjs.com/

      目录
      目录