当前位置: 首页 > 知识库问答 >
问题:

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

裴俊能
2024-12-29

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

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

共有2个答案

焦阎宝
2024-12-29
  1. vite dev 模式走 ESM,利用浏览器自身的机制,降低了打包成本,这是它快起来的原因。
  2. 但是这种模式并不适合 build,我们还是期待在 build 阶段做更多的优化
  3. 所以选择使用两种不同的方式
  4. 那么既然都决定不用一种方式了,自然可以放飞一些:dev 更快,build 更稳
  5. 我觉得这正是开源世界的迷人之处。谁都可以把脑中的想法辅助实施,哪怕只是改善了一些些也没问题,是否选用它,交给其他开发者来抉择。
裴鸿熙
2024-12-29

这个问题算是 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 全换掉的。

 类似资料:
  • 更新时间:2019-08-31 11:22:33 服务分为生产环境与开发环境,未发布的服务认为是在开发环境,发布后的服务为生产环境的服务。生产环境的服务才可以在web工作台,或代码工程内调用。生产环境的服务不可再进行修改,需要在开发环境中修改部署发布服务后,才可生效。 服务运维监控功能是为生产环境的服务提供的,您可以在此查看生产环境服务的调用量及运行日志。

  • 如果你使用了 vux2 模板或者 webpack 模板,默认你可以直接通过判断 process.env.NODE_ENV 来区分 比如统计代码仅放在 production 环境,在不同环境里使用不同的 API 接口地址。 if (process.env.NODE_ENV === 'production') { // 干一些线上才要做的事情 } if (process.env.NODE_ENV

  • 我正在考虑使用Firebase作为MBaaS,但是我找不到任何可靠的解决方案来解决以下问题: 我想设置两个独立的Firebase环境,一个用于开发,一个用于生产,但我不想在开发和生产环境之间手动复制特性(例如远程配置设置、通知规则等)。 有什么建议吗?有没有比拥有两个独立的环境更好的方法? 在您发布关于如何建立单独的Firebase帐户的问题的另一个答案之前:这不是问题,请再读一遍。问题是:如何在

  • 扩展package.json不支持app区分环境,有什么方法可以实现类似的吗?目前想要通过不同打包命令,区分环境

  • 您如何为开发和生产(集群)构建图像: 我正试图为两者都提供一个Dockerfile,以保持“Dockerfile实现在一个地方”,如继承: 然后使用docker compose。开发yml 就像docker compose一样。开发yml: 所以首先,命名不起作用。 额外的问题:如何为生产构建一个映像-您是否只需在一个容器中编译(docker运行),然后将二进制文件复制到一个新容器中?

  • 21. 打包您的生产环境程序 可执行的jar文件可以用于部署生产环境。由于它们是独立自足的,它们也非常适合基于云的部署。 至于额外的“生产环境”功能,如 ,请考虑添加spring-boot-actuator。详细信息请参阅V. Spring Boot致动器:生产环境功能。

  • 开发环境下,Vue 会提供很多警告来帮你对付常见的错误与陷阱。而在生产环境下,这些警告语句却没有用,反而会增加应用的体积。此外,有些警告检查还有一些小的运行时开销,这在生产环境模式下是可以避免的。 不使用构建工具 如果用 Vue 完整独立版本,即直接用<script>元素引入 Vue 而不提前进行构建,请记得在生产环境下使用压缩后的版本 (vue.min.js)。两种版本都可以在安装指导中找到。

  • 最低要求 Dism++ 10.1.5.3及以后版本的Dism++ 虽然Dism++在早期版本已经支持插件,但是从10.1.5.3开始Dism++才重新发布Dism++SDK 如果你要问为何要Dism++?表示没有Dism++开发Dism++插件是不可能的 一个可以编译dll的C++编译器 你可以用MSVC,GCC,Clang等编译器;前提是能编译Win32动态链接库; 可选建议 推荐使用 Visu