生产环境node_modules冗余问题:Photoshop插件打包体积过大如何优化?
解决方案
1. 优先优化Firebase SDK引入(核心优化项)
你安装的完整firebase包默认包含了所有Firebase服务(Auth、Storage、Functions、Firestore等),仅用到Firestore的话完全可以按需引入,大幅削减依赖体积:
- 把原有全量引入写法替换为v9版本支持树形摇的模块化导入写法,仅引入实际用到的接口:
// 弃用全量引入写法 import firebase from 'firebase/app' import 'firebase/firestore' // 改用按需引入写法,打包时只会保留你用到的代码 import { initializeApp } from 'firebase/app' import { getFirestore, collection, addDoc } from 'firebase/firestore' // 只导入实际用到的Firestore方法
- 如果不需要实时监听、离线持久化这类功能,可以直接使用Firestore轻量SDK,把导入路径换成
firebase/firestore/lite,体积还能再减70%左右。
2. 清理node_modules冗余依赖
- 先运行
npx depcheck命令扫描项目,工具会自动列出package.json中声明但代码完全未引用的冗余依赖,直接执行npm uninstall <包名>卸载对应包即可。 - 卸载完成后运行
npm prune --production,命令会自动删除node_modules中所有归类为devDependencies的开发依赖(比如eslint、测试工具这类生产环境用不上的包)。 - 不要手动删除node_modules内的文件,容易触发运行时异常。
3. 打包环节优化
- 如果你用webpack/vite这类打包器,确保打包时mode设置为
production,默认会自动开启树形摇、代码压缩,不会把node_modules中未引用的代码打进最终产物。 - 不要把整个node_modules文件夹都打进最终包,PS扩展仅需要打包编译后输出的js、资源文件即可,完全不需要携带node_modules目录,这是新手打包时最容易犯的错误。
内容的提问来源于stack exchange,提问作者Ian Barber
相关产品推荐
相关产品推荐

