何时选择 Webpack?
1. 面试题
Q: 现在是不是所有项目都应该用 Vite?什么情况下你会选择 Webpack?
2. 核心解答
虽然 Vite 开发体验极佳,但 Webpack 仍然是目前生态最成熟、功能最强大 的打包工具,特别是在以下场景:
(1) 复杂的构建流程
- Loader 链式处理:有些项目可能对资源处理逻辑非常复杂 (Less -> PostCSS -> CSS Modules -> Image Inline),需要非常精细的配置。Webpack 的 Loader 机制极其灵活。
- Plugin 深度定制:如果你需要根据打包产物自动上传 CDN、生成 manifest、插入 script 标签、做非常复杂的代码拆分逻辑,Webpack 的插件生态无人能敌。
(2) 兼容性要求极高
- IE11:虽然 Vite 官方有
@vitejs/plugin-legacy 支持 IE11,但配置繁琐且容易踩坑 (如 polyfill 不全,语法不兼容)。Webpack + Babel 是经受过无数项目考验的黄金组合,不仅能转译语法,还能通过 useBuiltIns: 'usage' 自动按需引入 polyfill。
- Older Browsers: 对于更老的浏览器 (IE 9/10),只能选 Webpack。
(3) 生态依赖
- 如果你的团队有一套基于 Webpack 封装的脚手架、或使用了某些只有 Webpack Loader 才支持的功能 (如特定的 React HOC 处理、奇怪的文件格式转换),迁移到 Vite 需要重写大量配置,成本极高。
(4) 大型单体项目
- 虽然 Vite 开发快,但在生产构建 (Rollup) 时,对于巨型应用 (几千个文件) 的处理速度和内存占用,Webpack 5 的持久化缓存 (Persistent Caching) 和分包能力表现得非常稳定。
- 有时 Rollup 对某些 CommonJS 模块的兼容性不如 Webpack 好 (毕竟 Webpack 本身就是靠 CJS 起家的)。
3. 选型建议
- Vite: 新项目、React/Vue、追求开发效率。
- Webpack: 遗留项目、需深度定制构建流程、需完美兼容 IE11。
4. 总结
- Webpack: Best Compatibility, Strongest Ecosystem, Proven Stability.
- Vite: Best DX, Fast Dev Server.