【问题标题】:using the npm API to retrieve a list of private npm packages with versions, possible?使用 npm API 检索带有版本的私有 npm 包列表,可能吗?
【发布时间】:2018-05-21 19:08:36
【问题描述】:

我有一个带有 npmjs.org 的私有 npm 注册表,其中包含几个私有 npm 包。我们正在内部迁移到私有 npm 注册表 (verdaccio)。长话短说,使用我们的 AWS 基础设施,verdaccio 服务器可以出于多种原因进行重建,主要问题是当新服务器启动时安装新的 verdaccio,显然它不会发布任何包。我正在尝试创建一个脚本,该脚本将在创建服务器时运行,该脚本将执行一些操作: 1.询问用户之前的npm注册表是什么以及一个用户的authToken(在我们的例子中,一个只有服务器使用的服务用户) 2. 查询以前的 npm 注册表以获取所有私有作用域包及其所有版本的列表 3. 将所有先前存在的包和版本复制/迁移/发布到新的 verdaccio 注册表,以便第一个运行“npm install”的人将获得它们。

有几个实用程序包可以帮助处理任务类型,但没有一个处理私有包。我尝试使用 curl 命令中的用户登录时生成的 .npmrc 文件中的 authToken,但没有返回任何内容。我试过使用 npm 搜索功能。我已经尝试了所有这些实用程序包。我已经尝试过 npm v2 api,但似乎没有返回私有包。

https://www.npmjs.com/package/registry-migrate

https://www.npmjs.com/package/npm-migrate

https://github.com/finn-no/migrate-npm-registry

https://github.com/npm/npm-registry-client

https://api-docs.npms.io/#api-Package-GetMultiPackageInfo

有人有什么想法吗??谢谢!

【问题讨论】:

标签: node.js npm


【解决方案1】:

您需要在 npm 注册表 API 中添加 NPM_TOKEN。

我发现 2 个端点可以帮助您使用私有 npm 包的版本执行任何必要的逻辑

  1. 列出所有私有 npm 包名称和访问权限
curl -H "Authorization: Bearer $NPM_TOKEN" "https://registry.npmjs.org/-/user/[NPM_USERNAME]/package"

示例响应:

{ "my-package": "write" }

** NPM_USERNAME 可以是组织的范围。

  1. 获取 npm 包详细信息
curl -H "Authorization: Bearer $NPM_TOKEN" "https://registry.npmjs.org/[NPM_PACKAGE_NAME]"

示例响应:

{
  "_id": "my-package",
  "name": "my-package",
  "dist-tags": { "latest": "1.0.0" },
  "versions": {
    "1.0.0": {
      "name": "my-package",
      "version": "1.0.0"
      //...
    }
  //...
  }
}

【讨论】:

  • 这个答案太不可思议了,我到处找这个。不敢相信我是第一个对此表示赞同的人。谢谢!!!
  • 我已经寻找这个端点好几个小时了。你是救生员。这在任何地方都有记录吗?您是如何找到端点的?
猜你喜欢
  • 1970-01-01
  • 2018-03-09
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 2015-04-14
  • 1970-01-01
相关资源
最近更新 更多