【发布时间】:2021-12-15 22:19:25
【问题描述】:
它在 npm 代码中的哪个位置根据校验和验证包?也可以验证一台机器的节点和包的安装与另一台机器的对比吗?例如,是否可以为一台机器生成一堆校验和,以与注册表中的任何内容进行比较,并在另一台机器上进行比较。
在 npm 中,它似乎使用了一个名为 arborist 的树库来创建目录结构的副本。另一方面,作为用户,为了出处和验证,我希望能够验证、生成包的校验和。我该怎么做呢?它是内置在包管理器中的吗?
【问题讨论】:
它在 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'],
})
就像这样,是否可以为一台机器生成一堆校验和,以便与注册表中的任何内容进行比较,并在另一台机器上进行比较。
我不确定您的用例的详细信息,但我相信这应该是可能的。查看npm 用于生成完整性SHA 的fromData() and other functions of the ssri module。
请注意,npm 从 tarball 生成 SHA(如果您从 git 而不是 npm 注册表安装,则从 git SHA)。因此,您需要将模块打包为 tarball。 npm pack 命令可能会派上用场。
与npm 文档中的"Verifying the PGP signature of a package from the npm public registry" 文章相关(但不是您要查找的内容)。
【讨论】: