如何分析并优化打包体积?有哪些常见手段?
分析:
- Webpack:
webpack-bundle-analyzer可视化每个模块占比 - Vite:
rollup-plugin-visualizer生成 treemap
常见优化:
- 按需引入:
import { debounce } from 'lodash-es'而非整包 lodash(Tree Shaking) - 替换更轻量库:dayjs 替 moment、npm 包体积扫描
bundlephobia - 压缩:Terser(JS)、esbuild/CssMinimizer(CSS)、
gzip/brotli - externals + CDN:把 react 等大库用
<script>引入、配置externals不打包 - 拆 vendor / 路由懒加载(见上)
- 图片/字体:压缩、转 WebP、用精灵图或 base64 小图
// 把 react 排除出打包,改用全局变量(需 index.html 先引入 CDN)
externals: { react: 'React', 'react-dom': 'ReactDOM' }