何时选择 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.