node.js - npm如何验证包以及如何验证机器之间的npm/node安装包?
问题描述
它在 npm 代码中的哪个位置根据校验和验证包?也可以验证一台机器的节点和包的安装与另一台机器的对比吗?例如,是否可以为一台机器生成一堆校验和,以与注册表中的任何内容进行比较,并在另一台机器上进行比较。
在 npm 中,它似乎使用了一个名为 arborist 的树库来创建目录结构的副本。另一方面,作为用户,为了出处和验证,我希望能够验证、生成包的校验和。我该怎么做呢?它是内置在包管理器中的吗?
解决方案
它在 npm 代码中的哪个位置根据校验和验证包?
这里:https ://github.com/npm/cli/blob/04eb43f2b2a387987b61a7318908cf18f03d97e0/lib/utils/tar.js#L78-L80
const integrity = await ssri.fromData(tarball, {
algorithms: ['sha1', 'sha512'],
})
例如,是否可以为一台机器生成一堆校验和,以与注册表中的任何内容进行比较,并在另一台机器上进行比较。
我不确定您的用例的详细信息,但我相信它应该是可能的。查看用于生成完整性 SHA的模块的fromData()
功能和其他功能。ssri
npm
请注意,从 tarball 生成 SHA(如果您是从注册表npm
安装,则从 git SHA 生成git
) 。npm
因此,您需要将模块打包为 tarball。该npm pack
命令可能会派上用场。
相关的(但不是你要找的,我不认为)将是文档中的“验证来自 npm 公共注册表的包的 PGP 签名”文章。npm
推荐阅读
- javascript - 如何使用 auth().createUserWithEmailAndPassword 接收用户名和国家/地区
- javascript - 我无法从服务器获得响应
- autodesk-forge - 未从 Autodesk Forge API 收到 Webhook 事件
- uipath-robot - 协调器中的 Uipath 机器人调度
- html - 如何将页面导航到不同语言的 ID?
- android - Mapbox 反向地理编码并不总是返回结果
- java - 如何在java中输入并打印整个字符串?
- c++ - 如何将 GDI 位图转换为 GDI+ 位图、DrawImage?
- shell - 无法在 Jenkins 管道中执行“sh”命令
- r - 拟合游戏的一阶导数和置信区间