随着时间的推移,项目中总会留下很多历史痕迹,比如在package.json中存在各种没用的套件依赖。这是因为业务代码中去掉依赖引用,但没有及时处理包管理文件。这时要分析出哪些是无用依赖套件,是个头疼的问题,depcheck 这个库提供了较为便捷友好的操作。
找一个node项目为例,先备份package.json:
# 当前node版本检查
$ node -v
v10.19.0
# 全局安装depcheck,node.js>=10
$ npm install depcheck -g
# 在package.json同级目录运行
$ depcheck
当前项目分析得到得到如下数据:
无用业务依赖27个, 无用开发依赖12个
依次执行 npm uninstall xxx模块 进行移除,这一步要很小心,需要check;其中就发现一下三个不准确:
- husky 库可以防止使用 Git hooks 的一些不好的 commit 或者 push;保留它~
- null-loader可以使依赖项导入的模块静音。比如说,项目依赖于导入不需要的 polyfill 的ES6库,删除它将不会导致功能损失;在next.config.js配置中可见,保留它~
- core-js是 babel-polyfill 的底层依赖;在next.config.js配置中可见,保留它~
- @babel/core是babel的核心依赖,保留它~
- url-loader在webpack打包字体文件时用到了,保留它~
执行启动命令看是否正常 👊🏼!!!
最后用depcheck再分析一下:
Unused dependencies
* core-js
Unused devDependencies
* @babel/core
* husky
* null-loader
* url-loader
看来这个depcheck这个工具使用时还是要小心,webpack配置的rules依赖和脚手架下的点配置文件相关依赖无法识别,需要再次check。
到此,项目构建一把看看。
$ npm run build
以上,观察包大小在操作前后没有增减,无用业务依赖包移除26个,无用开发依赖包移除9个。