使用npm API检索带有版本的私有npm包列表,可能吗?

时间:2018-05-21 19:08:37

标签: node.js npm

我有一个私有的npm注册表和npmjs.org,其中包含几个私有的npm包。我们正在转移到内部的私人npm注册表(verdaccio)。总而言之,凭借我们的AWS基础架构,verdaccio服务器可以由于多种原因进行重建,主要问题是当新服务器通过全新的verdaccio安装进行调整时,显然不会发布任何软件包。我正在尝试创建一个脚本,该脚本将在创建服务器时运行,该脚本将执行以下操作: 1.询问用户以前的npm注册表是什么以及用户的authToken(我们的情况是,只有服务器使用的服务用户) 2.查询以前的npm注册表以获取包含其所有版本的所有私有范围包的列表 3.复制/迁移/发布/发布所有以前存在的软件包和版本到新的verdaccio注册表,以便第一个运行“npm install”的人将获得它们。

有几个实用程序包用于帮助完成任务类型,但没有一个处理私有包。我尝试使用.hpmrc文件中的authToken,该文件是在用户登录时生成的,来自curl命令,但没有返回任何内容。我尝试过使用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

任何人都有任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

您需要在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"
      //...
    }
  //...
  }
}