前端工程化 词条目录
前端Wiki/前端工程化/进阶/构建工具演进

Vite 与 esbuild

webpack 的痛点是开发启动慢(启动前必须打包完整个依赖图)。Vite 的思路:开发时根本不打包——直接用浏览器原生的 ESM,请求哪个模块就编译哪个模块(按需编译),所以项目再大启动也是毫秒级。

生产环境 Vite 用 Rollup 打包(产物更小)。对于大量 CommonJS 依赖(如老旧 npm 包),Vite 用 esbuild(Go 写的极速编译器)做“预构建”把它们转成 ESM,速度比 webpack 快一到两个数量级。

  • Vite dev = 浏览器原生 ESM + 按需编译,启动不随项目变大而变慢
  • esbuild 用 Go 写,编译速度是 JS 工具的 10~100 倍
  • 生产构建用 Rollup:分包与 Tree Shaking 更成熟
配置
// vite.config.js —— 常用配置一览
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  plugins: [vue()],                 // 框架支持以插件形式接入
  resolve: {
    alias: { '@': '/src' },         // 路径别名:import x from '@/utils/x'
  },
  server: {
    port: 5173,
    open: true,                     // 自动开浏览器
    proxy: {                        // 开发环境接口代理,解决跨域
      '/api': { target: 'http://localhost:3000', changeOrigin: true },
    },
  },
  build: {
    outDir: 'dist',
    rollupOptions: {
      output: { manualChunks: { vue: ['vue', 'vue-router'] } },  // 简单分包
    },
  },
});

// 创建项目:npm create vite@latest my-app -- --template vue
本节要点Vite 开发靠原生 ESM 按需编译(秒开),生产靠 Rollup 打包;esbuild 是速度引擎。