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

Use auth token to query a private NPM registry for a given package version, but without filesystem access?

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

我还可以将私有注册表 URL 传递给 npm view <packagename>,如 npm view <packagename> --registry https://private.registry/path/ 中一样。尽管在 the npm-view documentation (but it's described in the npm-search documentation 中没有明确提及,但这似乎影响了私有注册表,所以我认为这意味着它是一个记录在案的 API 功能)。

为了能够与私有注册中心对话,我可以根据 these npm instructions for doing it in a CI/CD workflow 在查询中使用身份验证令牌:将其放入 .npmrc 文件中,如下所示:

//your_registry/:_authToken 12345

或者更安全地说,//your_registry/:_authToken $TOKEN 并将 TOKEN 环境变量设置为 12345 其他地方。

无法弄清楚如何使用npm view对私有npm注册表,不写入.npmrc 文件.

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

我是不是漏掉了一些非常明显的东西?我在哪里可以找到有关 NPM 注册表的视图 and/or 搜索功能的请求格式的指南?什么是 curl 命令,包括发送身份验证令牌、包名称和版本,并接收一些指示是否存在?

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

#!/bin/sh
curl -H 'Authorization: Bearer $TOKEN' https://your_registry/$PACKAGE/$VERSION 

如果包不存在,它将return {}。如果是,您将获得包裹信息。