了解NPM包覆面提取

sczxawaw  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(138)

最近发现了npm-audit,在第一次运行时,它标记了很多漏洞,主要是围绕包及其依赖关系。
为了解决这些漏洞,我发现了npm shrinkwrap,它允许我指定应该使用的版本和依赖项?这就是我的看法(如果错误,请纠正我,在这里学习)。
我尝试修复的一个示例是模块hoek,在我的package.json中,它被设置为"hoek": "^5.0.3"
当我运行npm shrinkwrap时,其中一个依赖项将hoek设置为版本2

"boom": {
  "version": "2.10.1",
  "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
  "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
  "requires": {
    "hoek": "2.x.x"
  },
  "dependencies": {
    "hoek": {
      "version": "2.16.3",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
    }
  }
},

我想我可以编辑它并指定我希望依赖项使用的版本,如下所示

"boom": {
  "version": "2.10.1",
  "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
  "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
  "dev": true,
  "requires": {
    "hoek": "2.x.x"
  },
  "dependencies": {
    "hoek": {
      "version": "5.0.3",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.3.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
      "dev": true
    }
  }
},

但是,当我运行npm shrinkwrapnpm install时,所有这些都恢复为原始值
我该如何处理这件事呢?收缩 Package 是正确的选择还是我想用它做一些我根本做不到的事情?
谢谢

wvyml7n5

wvyml7n51#

NPM收缩用于锁定项目中的依赖项版本。
使用npm installnpm install package-name安装软件包并更新node_modules文件夹后,应运行npm收缩 Package
它将创建一个新的npm-shrinkwrap.json文件,其中包含您使用的所有软件包的信息,您必须提交该文件。
下一次,当有人调用npm install时,它将从npm-shrinkwrap.json安装包,并且您将在所有机器上拥有相同的环境。

axr492tv

axr492tv2#

npm-shrinkwrap.json由npm publish执行-意味着它将包含在最终包中。
package.json将被npm publish忽略,因此您的最终包将无法“锁定”包版本。

相关问题