使用身份验证令牌查询给定软件包版本的私有 NPM 注册表,但没有文件系统访问权限?

Ian*_*Ian 8 readonly package node.js npm npm-registry

这项工作的目的是能够测试私有注册表中是否存在软件包版本,而无需触及文件系统/配置文件。对于公共注册表中的包,这非常简单:npm view lpad@2.0.1生成有关该已发布版本的一些信息,但(截至撰写本文时)npm view lpad@201.0.0没有任何信息或输出。我用它来推断包的存在。

我还可以将私有注册表 URL 传递给npm view <packagename>,如 中所示npm view <packagename> --registry https://private.registry/path/。尽管文档中没有明确提及,但这似乎会影响私有注册表npm-view文档npm-search对此进行了描述,所以我认为这意味着它是一个记录在案的 API 功能)。

为了能够与私有注册表对话,我可以根据这些 npm 说明在查询中使用身份验证令牌,以便在 CI/CD 工作流程中执行此操作:将其放入.npmrc文件中,如下所示:

//your_registry/:_authToken 12345
Run Code Online (Sandbox Code Playgroud)

或者更安全地,//your_registry/:_authToken $TOKENTOKEN环境变量设置为12345其他位置。

知道该怎么做是npm view针对私有npm注册表使用,而不写入.npmrc文件

我计划从同一台机器并行运行多个查询,因此为了避免文件中的竞争条件.npmrc,我宁愿直接在每个命令中通过身份验证。我假设使用身份验证令牌,这只是一个简单的curl命令,但我没有找到有关 NPM API 如何工作的信息。(它npm-registry-client似乎没有做任何与查看/查找相关的事情;它access设置访问级别)。

我是否遗漏了一些显而易见的东西?在哪里可以找到有关 NPM 注册表的查看和/或搜索功能的请求格式的指南?curl包含发送身份验证令牌、包名称和版本并接收其是否存在的指示的命令是什么?

Ian*_*Ian 13

在这里找到答案:https ://github.com/npm/registry/blob/master/docs/user/authentication.md

#!/bin/sh
curl -H 'Authorization: Bearer $TOKEN' https://your_registry/$PACKAGE/$VERSION 
Run Code Online (Sandbox Code Playgroud)

如果包不存在,则返回{}。如果是这样,您将获得包裹信息。