NPM如何更新/升级传递依赖项?

时间:2019-06-17 15:30:07

标签: node.js express npm

我在节点服务器中使用express v4.16.4。

它引入了cookie签名v1.0.6。

我想将cookie签名升级到v1.1.0,因为它具有我需要的修复程序。 这样做的方式是什么?

我不认为我应该在npm上安装cookie-signature@1.1.0,因为它会在我的应用程序依赖项中列出cookie-signature。

编辑:this讨论了我要解决的完全相同的问题。可接受的答案是使用npm-shrinkwrap,另一个最受欢迎的答案是使用package-lock.json,但这两个似乎都存在问题,如各自的评论所述。

很高兴将其作为副本关闭。

2 个答案:

答案 0 :(得分:8)

您也可以通过在 resolutions 中添加 package.json 键来“强制”某些版本的依赖项来解决该问题:

{
  "resolutions": {
    "cookie-signature": "^1.1.0"
  }
}

要真正使用它,您必须在 npm-force-resolutions 中使用 preinstall

"scripts": {
  "preinstall": "npx npm-force-resolutions"
}

有关更多信息,请参阅此帖子:https://itnext.io/fixing-security-vulnerabilities-in-npm-dependencies-in-less-than-3-mins-a53af735261d

答案 1 :(得分:0)

我们有一个非常相似的问题。量角器5.4.2依赖于webdriver-manager@^12.0.6。在package-lock.json中,webdriver-manager固定为12.1.5。但是,我们需要12.1.7才能使其与所有最新的chrome版本一起使用。

我们注意到,npm在删除node_modules和package-lock.json时将安装版本12.1.7,但是我们没有找到自动更新package-lock.json的方法。这就是我们采取的步骤:

  1. 删除node_modules
  2. 删除package-lock.json
  3. 运行npm install
  4. 打开package-lock.json并将webdriver-manager部分复制到另一个文件
  5. 撤消(git签出)package-lock.json中的所有更改
  6. 将保存的webdriver-manager部分复制回package-lock.json
  7. 删除node_modules
  8. 运行npm install
  9. 检查node_modules / protractor / node_modules / webdriver-manager / package.json是否安装了正确的版本。

我认为这种解决方法也应适用于快递和cookie签名。