在npm

时间:2018-06-12 18:25:07

标签: node.js security npm

  • npm版本:3.10.10
  • node版本:6.14.2

我需要升级npm的某些依赖项来解决一些安全警告。例如:sshpknpm通过http-signaturerequest的依赖关系:

bash-4.3# npm ls sshpk -g
/usr/local/lib
`-- npm@3.10.10
  `-- request@2.75.0
    `-- http-signature@1.1.1
      `-- sshpk@1.10.1

我需要sshpk才能升级到>=1.14.1,这可能是http-signature@1.1.1的package.json中的版本锁定所致:

"dependencies": {
    "assert-plus": "^0.2.0",
    "jsprim": "^1.2.2",
    "sshpk": "^1.7.0"
  },

我尝试过npm upgrade -g npm@3npm --depth 9999 upgrade -g npm@3但没有成功。似乎npm不会在任何update操作中继续,因为它注意到我们已经在npm 3.x.x版本3.10.10发布了npm。就安全补丁而言,我需要能够使npm update的依赖关系保持最新状态。这可以直接通过yarn upgrade <package>@<version>吗?我正在考虑类似于man systemd.service的东西,它将遍历包的子依赖关系并升级它们,即使父包不需要版本更改。

1 个答案:

答案 0 :(得分:0)

重新安装软件包的一种可靠方法是将其删除或node_modules并重新安装。

由于NPM无法安装NPM,因此需要Node to be reinstalled

另一种方法是安装备用NPM包装器(例如npm3)并使用它重新安装主npm

npm i -g npm3
rm -rf npm/
npm3 i -g npm@3

--force option可用于重新安装软件包,但不保证将重新安装软件包依赖项。