depcheck是node.js项目专用的静态依赖检测工具,能自动扫描代码与package.json,精准识别未使用、缺失、冗余依赖及分类错误,支持vue/react/ts等主流前端项目,零配置开箱即用。

识别并剔除无用依赖,关键不是靠猜,而是靠“扫描+验证+确认”三步闭环。很多项目里躺着 5~15 个真正没被引用的依赖,删掉就能减小 10%~30% 的打包体积,还不影响运行。
用 depcheck 快速筛出可疑依赖
depcheck 是最轻量、最直接的静态扫描工具,能识别 package.json 中声明但源码里从未 import/require 的包。
- 安装并运行:
npx depcheck(无需全局安装) - 它会分类列出:未使用依赖(如
lodash-es写了但全项目没 import)、缺失依赖(代码里用了但没写在 package.json)、未使用开发依赖(比如多余的 eslint 插件) - 注意:Babel 插件、Webpack loader、.env 中隐式加载的包不会被 depcheck 标记,需人工核对
用 webpack-bundle-analyzer 看真实打包结果
depcheck 只看代码引用,而 webpack-bundle-analyzer 展示的是最终打进 dist 的内容——这才是“是否真有用”的铁证。
递归分析 Vue 项目组件依赖,从入口文件生成组件层级图,支持 Vue 2/3,输出组件名、文件路径和属性。适用于分析组件结构、排查依赖或了解项目架构。
- 在
vue.config.js中加入插件,运行npm run build --report - 打开报告后,重点看:node_modules 下哪些包实际被打进了 main.js 或 vendors.js;如果某个包在 depcheck 里被标为“未使用”,又在 bundle 分析图里完全没出现,基本可安全删除
- 反例:
axios被 depcheck 判为未使用,但在 bundle 图中却占了 80KB → 很可能通过Vue.prototype.$http方式挂载,属于隐式使用,不能删
用 Knip 做深度组件级清理
Knip 比 depcheck 更进一步,能发现未被任何 template、script 或 import 触达的 Vue 组件、composables、工具函数,甚至未导出的模块。
- 安装:
npm install -D knip,加脚本"knip": "knip" - 运行后输出明确清单:如
src/views/UnusedPage.vue(从未被路由或父组件引用)、src/composables/useOldApi.ts(所有调用都被注释掉了) - 实战中,Knip 平均能定位到 20~50 个可删组件 + 5~15 个冗余依赖,适合中大型 Vue2/Vue3 项目做定期体检
删之前务必验证,避免误伤
删除操作不可逆,尤其涉及构建时依赖或运行时反射调用的包。
- 先注释掉
package.json中待删依赖,再yarn install,跑一遍npm run serve和关键路径 E2E 测试 - 检查控制台是否有
Module not found或运行时报错(比如Cannot read property 'install' of undefined说明某插件被 Vue.use 但没引入) - 删完记得清空
node_modules和锁文件,重装依赖,防止残留缓存干扰
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!









