首页 > 解决方案 > npm如何验证包以及如何验证机器之间的npm/node安装包?

问题描述

它在 npm 代码中的哪个位置根据校验和验证包?也可以验证一台机器的节点和包的安装与另一台机器的对比吗?例如,是否可以为一台机器生成一堆校验和,以与注册表中的任何内容进行比较,并在另一台机器上进行比较。

在 npm 中,它似乎使用了一个名为 arborist 的树库来创建目录结构的副本。另一方面,作为用户,为了出处和验证,我希望能够验证、生成包的校验和。我该怎么做呢?它是内置在包管理器中的吗?

标签: node.jslinuxnpm

解决方案


它在 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()功能和其他功能。ssrinpm

请注意,从 tarball 生成 SHA(如果您是从注册表npm安装,则从 git SHA 生成git) 。npm因此,您需要将模块打包为 tarball。该npm pack命令可能会派上用场。

相关的(但不是你要找的,我不认为)将是文档中的“验证来自 npm 公共注册表的包的 PGP 签名”文章。npm


推荐阅读