在我的项目中,我使用"laravel-mix",它依赖于"webpack-dev-server">
"npm-audit"报告我的版本webpack-dev服务器上有一个高严重性漏洞,所以我一直在尝试将其更新到最新版本。。但没有成功。
我试过
npm update
npm update webpack-dev-server
npm update laravel-mix
没有成功。。我想问题是laravel混合已经是最新的,但它的依赖性不是。。
我试着添加一个新版本的webpack-dev服务器作为依赖项,希望它能取代旧版本,但我只是同时存在两个版本:
npm ls webpack-dev-server
+-- laravel-mix@2.1.14
| `-- webpack-dev-server@2.11.3
`-- webpack-dev-server@3.1.10
我有没有办法强制更新webpack-dev-server依赖项?我需要这个项目的laravel混合,由于我的资产是在生产服务器上编译的,我甚至不能将其设置为仅依赖于开发。。
不幸的是,如果您使用的包固定了自己的依赖项,则无法在项目的顶层修复它,尽管这是npm未来计划的一个功能,允许别名覆盖子依赖项。
您可以在这里看到一个简短的指南,手动查看子依赖项,并为项目创建PR以修复它们自己的依赖项。
将来,如果npm audit fix
在您使用的版本上可用,我是否也可以建议使用它,因为如果可以的话,它将尝试自动修复问题。
顺便说一句,我不会太担心这个易受攻击的软件包,尽管它的严重性很高,但只有当你在生产中使用开发服务器时,它才会成为一个问题,正如它在锡上所说的dev,你绝对不应该在任何地方使用它,而是在开发中本地使用。:-(
我们在puppeteer > extract-zip > mkdirp > minimist
上遇到了类似的问题,其中minimist
存在安全漏洞。它升级了,mkdirp
也升级了,但在撰写本文时extract-zip
还没有。
在package.json
中的scripts
条目下使用npx npm-force-resolutions
似乎已经达到了目的。
$ git diff package.json
diff --git a/package.json b/package.json
index cf825cf..0d694b3 100644
--- a/package.json
+++ b/package.json
@@ -8,8 +8,13 @@
"lib": "lib"
},
"scripts": {
+ "preinstall": "npx npm-force-resolutions",
"test": "echo "Error: no test specified" && exit 1"
},
+ "resolutions": {
+ "minimist": "1.2.3",
+ "mkdir": "0.5.3"
+ },
然后运行npm install
:
$ npm install && npm audit
> sge@1.0.0 preinstall /home/jlam/code/prjName
> npx npm-force-resolutions
npx : 5 installé(s) en 5.733s
added 1 package from 1 contributor, removed 1 package and audited 72 packages in 7.212s
[...]
found 0 vulnerabilities
[...]
=== npm audit security report ===
found 0 vulnerabilities
in 72 scanned packages