为什么 vite 要区分开发环境和生产环境的打包方式呢?

vite 在 dev 模式下,采用 esbuild 的方式,我知道 esbuild 很快,比 webpac 快多少倍。但是我想问的不是快慢的这个问题,而是为什么不统一 dev 和 prod 的打包方式?这样不是会极大减少因为打包方式不同而导致两个环境有可能会出现 bug 的几率吗?

问题:区分两种打包方式是为了什么呢?

阅读 758
2 个回答

这个问题算是 vite 的经年槽点之一了,完全是作者个人的口味选择,“既要”“又要”呗。

https://github.com/vitejs/vite/issues/655
https://cn.vitejs.dev/guide/why.html#why-not-bundle-with-esbuild

vite 刚发布那会儿 esbuild 确实一是生态上不够成熟,二是当时也没有仅支持 ESM 的浏览器市场基础。但显然尤大是非常钟情于 esbuild 的“快”的,为此不惜额外做出搞很多插件做转换适配试图抹平差异也要把 esbuild 加进来,所以最后就成了现在这样。

真的特别在意这个问题、或者就是因 esbuild 和 rollup 差异导致的 Bug 解决不了的人,也就不会用 vite 了。

P.S. 等着 rolldown 吧,迟早有一天 vite 是会把 esbuild/rollup 全换掉的。

  1. vite dev 模式走 ESM,利用浏览器自身的机制,降低了打包成本,这是它快起来的原因。
  2. 但是这种模式并不适合 build,我们还是期待在 build 阶段做更多的优化
  3. 所以选择使用两种不同的方式
  4. 那么既然都决定不用一种方式了,自然可以放飞一些:dev 更快,build 更稳
  5. 我觉得这正是开源世界的迷人之处。谁都可以把脑中的想法辅助实施,哪怕只是改善了一些些也没问题,是否选用它,交给其他开发者来抉择。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏