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

Dan*_*ima 9 node.js npm

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

有几个实用程序包可以帮助完成任务类型,但没有一个涉及私有包。我尝试使用 .npmrc 文件中的 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

有人有主意吗??谢谢!

mig*_*ano 12

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

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

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

响应示例:

curl -H "Authorization: Bearer $NPM_TOKEN" "https://registry.npmjs.org/-/user/[NPM_USERNAME]/package"
Run Code Online (Sandbox Code Playgroud)

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

  1. 获取 npm 包详细信息
curl -H "Authorization: Bearer $NPM_TOKEN" "https://registry.npmjs.org/[NPM_PACKAGE_NAME]"
Run Code Online (Sandbox Code Playgroud)

响应示例:

{ "my-package": "write" }
Run Code Online (Sandbox Code Playgroud)