如何强制指定开发依赖的子依赖@babel/runtime版本至7.26.10以修复安全漏洞?
如何强制指定开发依赖的子依赖@babel/runtime版本至7.26.10以修复安全漏洞?
我之前也碰到过这种子依赖引发的安全漏洞提示,明明自己没直接装这个包,却要为它的漏洞操心😂。针对你的情况,有几个非常实用的方法可以强制把@babel/runtime锁定到7.26.10版本,完美解决Dependabot的提示:
方法一:用npm的overrides字段(推荐,npm 8.3及以上版本支持)
从npm 8.3开始,官方提供了overrides字段专门用来强制覆盖子依赖的版本,这是最标准的解决方案。你只需要在项目的package.json里添加这个字段,指定你想要的@babel/runtime版本即可:
{ "devDependencies": { "@testing-library/react": "16.3.0" }, "overrides": { "@babel/runtime": "7.26.10" } }
添加完成后,执行npm install更新依赖。之后可以用npm ls @babel/runtime命令验证,整个依赖树里的@babel/runtime都会被强制替换成7.26.10版本。
方法二:用Yarn的resolutions字段(Yarn用户适用)
如果你项目用的是Yarn包管理器,可以用resolutions字段来实现同样的效果,写法和npm的overrides类似:
{ "devDependencies": { "@testing-library/react": "16.3.0" }, "resolutions": { "@babel/runtime": "7.26.10" } }
保存后执行yarn install,再通过yarn list @babel/runtime检查版本是否已经被正确锁定。
方法三:直接添加为开发依赖(应急临时方案,不推荐长期使用)
如果你赶时间,也可以直接把@babel/runtime@7.26.10添加为项目的开发依赖,因为包管理器会优先使用你直接声明的版本,自动覆盖子依赖的版本要求:
npm install --save-dev @babel/runtime@7.26.10
不过这个方法有个小问题:以后如果@testing-library/react更新了它的@babel/runtime依赖版本,你可能会忘记移除这个直接依赖,容易引发版本冲突。所以除非应急,还是优先用前两种方法更稳妥。
不管用哪种方法,操作完成后一定要记得验证版本是否生效,避免因为缓存或者配置问题没达到预期效果哦!
内容来源于stack exchange
相关产品推荐
相关产品推荐

