node.js - 了解 NPM 收缩包装

标签 node.js npm npm-shrinkwrap

最近发现了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 时,所有这些都会恢复为原始

我该如何处理这个问题?收缩包装是正确的选择还是我试图用它做一些我根本做不到的事情?

谢谢

最佳答案

NPM shrinkwrap 用于锁定项目中的依赖版本。

使用npm installnpm install package-name安装软件包并更新node_modules文件夹后,您应该运行npm Shrinkwrap

它将创建新的 npm-shrinkwrap.json 文件,其中包含有关您使用的所有包的信息,并且您必须提交该文件。

下次,当有人调用 npm install 时,它将安装 npm-shrinkwrap.json 中的软件包,并且您将在所有计算机上拥有相同的环境。

关于node.js - 了解 NPM 收缩包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50743893/

相关文章:

带有 --no-package-lock 标志的 npm install - 是否使用了现有的 package-lock.json?

node.js - 如何防止可传递的开发依赖被收缩包装

json - 如何使用 JQ 删除所有嵌套键

mysql - 如何使用node.js将excel文件导入MySQL?

node.js - 在 mongodb 本地时区聚合

Javascript 对象属性 Console.log

reactjs - 如何创建样式化组件库包以与 Gatsby 一起使用

javascript - 使用 Brunch 构建 npm 依赖源

node.js - 如何运行 "npm install"为旧的 Angular 项目创建 node_modules 文件夹?