返回

Vite 预构建源码梳理:深入理解预构建过程

前端

Vite 预构建:概览

Vite 是一个现代化的前端构建工具,它使用原生 ESM(ECMAScript 模块)来加速开发。为了进一步提升性能,Vite 引入了预构建机制,可以在构建时对代码进行优化。

预构建流程

Vite 的预构建流程分为以下几个阶段:

  1. 启动预构建: 在服务启动前,Vite 会调用 build() 方法触发预构建。
  2. 生成依赖图: Vite 根据入口文件解析依赖关系,生成一个依赖图。
  3. 优化依赖: 对于非 ESM 模块,Vite 会将其转换为 ESM 模块,并进行代码分割和按需加载优化。
  4. 生成预构建清单: 预构建完成后,Vite 会生成一个包含优化后依赖项的预构建清单。

预构建源码梳理

预构建的源码主要位于 src/node/server/build.ts 文件中。

启动预构建

// src/node/server/build.ts

export async function build() {
  // ...
  await triggerBuild();
  // ...
}

生成依赖图

// src/node/server/build.ts

async function triggerBuild() {
  // ...
  const importGraph = createImportGraph(config.root, config.build.ssr);
  // ...
}

优化依赖

// src/node/server/build.ts

function optimizeDeps(importGraph) {
  // ...
  if (isEsmSpecifier(dep.file)) {
    // ...
  } else {
    // ...
  }
  // ...
}

生成预构建清单

// src/node/server/build.ts

function generateManifest() {
  // ...
  const manifest = createManifest({
    appType: appType,
    build: build,
    appPath: config.root,
    // ...
  });
  // ...
}

使用预构建清单

在服务运行期间,Vite 会加载预构建清单,并使用清单中的优化依赖项进行按需加载。这极大地提升了首次加载速度和后续代码块的加载效率。

总结

Vite 预构建是一个强大的机制,它通过优化依赖项来提高前端应用的性能。通过对预构建源码的梳理,我们深入了解了预构建的过程,为进一步理解 Vite 的工作原理奠定了基础。