Vite 插件机制

面试题

Vite 插件有哪些常用钩子?Vite 插件和 Rollup 插件是什么关系?

核心钩子

  • config:读取或修改最终配置前执行。
  • configResolved:拿到合并后的只读配置。
  • resolveId:把导入路径解析为模块 ID。
  • load:提供虚拟模块或自定义模块内容。
  • transform:转换源码,常用于编译、注入和分析。
  • configureServer:开发服务器启动时注册中间件。
  • handleHotUpdate:自定义 HMR 影响范围。
  • generateBundle:生产构建生成 chunk 前后处理产物。

Vite 兼容大部分 Rollup 插件,并在其上增加开发服务器、HTML 和 HMR 相关能力。插件应尽量通过 enforce: 'pre' | 'post'apply: 'serve' | 'build' 明确执行时机和场景。

常见追问

虚拟模块通常使用 \0 前缀避免和真实文件冲突;transform 返回 codemap,否则调试时 Source Map 会断裂。插件修改配置时要注意开发构建和生产构建使用的字段并不完全相同。