如何升级所有glob-parent版本,修复低于5.1.2的正则拒绝服务漏洞?
解决glob-parent多版本无法统一升级及正则拒绝服务漏洞的方案
用npm overrides强制统一版本(npm 8.3及以上可用)
直接在项目根目录的package.json里添加overrides字段,把所有依赖链路中的glob-parent都锁定为6.0.1版本:{ "overrides": { "glob-parent": "6.0.1" } }保存文件后执行
npm install,npm会自动将依赖树里所有glob-parent实例替换为指定版本。旧版npm用npm-force-resolutions处理
如果你的npm版本低于8.3,按以下步骤操作:- 先安装npm-force-resolutions作为开发依赖:
npm install npm-force-resolutions --save-dev - 在
package.json的scripts中添加预安装命令,同时声明resolutions规则:{ "scripts": { "preinstall": "npx npm-force-resolutions" }, "resolutions": { "glob-parent": "6.0.1" } } - 删除项目根目录的
node_modules文件夹和package-lock.json,再执行npm install。
- 先安装npm-force-resolutions作为开发依赖:
手动清理重装兜底方案
- 删除
node_modules文件夹和package-lock.json(使用yarn则删除yarn.lock)。 - 先执行
npm install glob-parent@6.0.1 --save,再运行npm install。 - 执行
npm ls glob-parent检查所有实例是否完成升级。
- 删除
追根溯源升级上游依赖
执行npm ls glob-parent查看哪些依赖包仍在引用旧版本glob-parent:- 若这些上游包已有修复依赖的新版本,直接升级对应的上游包即可。
- 若上游包未更新,可向其维护者提交issue或PR,要求升级glob-parent依赖。
内容的提问来源于stack exchange,提问作者Happy1234
相关产品推荐
相关产品推荐

