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 $TOKEN将TOKEN环境变量设置为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)
如果包不存在,则返回{}。如果是这样,您将获得包裹信息。
| 归档时间: |
|
| 查看次数: |
13059 次 |
| 最近记录: |