返回

深度解读:Vite 如何利用 Esbuild 大幅提升构建性能

前端

在上一篇文章《为什么有人说 Vite 快,有人却说 Vite 慢?》中,我们提到过开发模式下使用 Vite 会有首屏性能下降的负面效果。之所以会造成首屏性能下降,一方面是 dev server 需要完成预编译、代码分割、资源加载等一系列操作,另一方面则是由于 Vite 使用了 esbuild 作为构建工具。Esbuild 虽然速度很快,但在某些场景下也会导致构建速度变慢。

为了解决首屏性能下降的问题,Vite 提供了多种优化方案。一种方案是使用 Vite 的 build 命令进行预构建。预构建会提前完成代码编译、资源打包等工作,这样在开发模式下就可以直接加载预构建好的资源,从而避免了 dev server 的构建开销。

另一种方案是使用 Vite 的 server.middleware 选项来配置自定义中间件。通过自定义中间件,可以将部分耗时的任务从 dev server 中剥离出来,从而提高构建速度。例如,可以使用 Vite 的 @vitejs/plugin-react 插件来配置自定义 React 编译器,这样就可以将 React 代码的编译工作从 dev server 中剥离出来,从而提高构建速度。

除了上述两种方案之外,Vite 还提供了其他一些优化方案来提升构建速度。这些优化方案包括:

  • 使用 cache 选项来启用构建缓存。
  • 使用 parallel 选项来启用并行构建。
  • 使用 swc 选项来使用 SWC 作为构建工具。
  • 使用 esbuild 选项来使用 Esbuild 作为构建工具。

通过这些优化方案,Vite 的构建速度可以得到显著提升。在某些场景下,Vite 的构建速度甚至可以比 Webpack 和 Rollup 快一个数量级。

结论

Vite 是一个非常优秀的构建工具,它可以显著提升 JavaScript 和 TypeScript 项目的构建速度。通过使用 Esbuild 作为构建工具,Vite 可以实现更快的构建速度。此外,Vite 还提供了多种优化方案来进一步提升构建速度。这些优化方案包括使用 Vite 的 build 命令进行预构建、使用 Vite 的 server.middleware 选项来配置自定义中间件、使用 cache 选项来启用构建缓存、使用 parallel 选项来启用并行构建、使用 swc 选项来使用 SWC 作为构建工具、使用 esbuild 选项来使用 Esbuild 作为构建工具等。通过这些优化方案,Vite 的构建速度可以得到显著提升。在某些场景下,Vite 的构建速度甚至可以比 Webpack 和 Rollup 快一个数量级。