Laravel项目npm install出现大量废弃依赖警告及漏洞求助
解决Laravel项目npm install的废弃依赖警告与漏洞问题
问题分析
你看到的npm WARN deprecated警告大多来自间接依赖——也就是你package.json中直接依赖的包所依赖的子包,所以不会出现在你的配置文件里。从你提供的内容来看,项目并没有使用Grunt(无Grunt配置文件或相关依赖),问题根源是项目依赖版本较旧(尤其是Laravel Mix 5.x),导致连锁依赖出现大量废弃提示和安全漏洞。
解决方案步骤
1. 清理旧依赖缓存
先删除旧的依赖文件,避免缓存干扰:
rm -rf node_modules package-lock.json # Windows系统执行以下命令 # rmdir /s /q node_modules && del package-lock.json
2. 升级核心直接依赖
重点升级几个关键依赖,从根源减少间接依赖的废弃问题:
修改package.json中的依赖版本:
{ "devDependencies": { "@coreui/coreui": "^3.4.0", // 升级到3.x稳定版,兼容Bootstrap 4 "@fortawesome/fontawesome-free": "^5.15.4", // 升级到最新5.x稳定版 "@vue/test-utils": "^1.3.0", "axios": "^0.21.4", // 修复安全漏洞的稳定版 "babel-core": "^7.0.0-bridge.0", "babel-jest": "^24.9.0", "bootstrap": "^4.6.2", // 升级Bootstrap到兼容Popper v2的版本 "cross-env": "^7.0.3", "cross-var": "^1.1.0", "jest": "^24.9.0", "jquery": "^3.6.4", "laravel-mix": "^6.0.49", // 升级到Mix 6稳定版 "lodash": "^4.17.21", "pace": "github:HubSpot/pace#v1.0.2", "perfect-scrollbar": "^1.5.5", "@popperjs/core": "^2.11.8", // 替换废弃的popper.js "resolve-url-loader": "^5.0.0", "sass": "^1.69.5", "sass-loader": "^10.4.1", // 兼容Mix 6的版本 "sweetalert2": "^9.17.2", "vue": "^2.7.14", // Vue 2的最新稳定版 "vue-jest": "^3.0.7", "vue-template-compiler": "^2.7.14" }, "dependencies": { "metismenu": "^3.0.6" } }
调整npm scripts(适配Laravel Mix 6):
Mix 6简化了命令,需要修改scripts部分:
"scripts": { "dev": "npm run development", "development": "mix", "watch": "mix watch", "watch-poll": "mix watch -- --watch-options-poll=1000", "hot": "mix watch --hot", "prod": "npm run production", "production": "mix --production", "test": "cross-env NODE_ENV=test jest", "tdd": "npm run test -- --watch --notify" }
3. 重新安装依赖并修复漏洞
执行以下命令完成安装和漏洞修复:
npm install # 自动修复无需破坏性变更的漏洞 npm audit fix # 若仍有未修复的漏洞,尝试强制修复(注意:可能引入破坏性变更,修复后需测试项目) npm audit fix --force
4. 验证项目正常运行
运行开发命令测试项目是否能正常编译:
npm run dev
如果出现编译错误,根据提示调整代码(比如Popper的导入路径,Bootstrap 4使用@popperjs/core时需要修改导入语句)。
额外提示
- 如果升级Laravel Mix后遇到兼容性问题,可参考Laravel Mix官方升级指南调整配置。
- 若项目依赖的Laravel版本较旧(比如Laravel 6以下),可能无法适配Mix 6,此时建议优先升级Laravel版本,或者保持Mix 5但手动替换部分高风险依赖(比如axios、popper.js)。
内容的提问来源于stack exchange,提问作者009
相关产品推荐
相关产品推荐

