Vite 插件

# Roolup、Vite 钩子函数

  • options(options),在解析 Rollup 配置之前调用,可以修改配置

  • buildStart,构建开始的时候调用,可以执行一些初始化操作

  • resolveId(source, importer),用于自定义模块解析逻辑,可以拦截并修改模块的导入路径

  • load(id),用于加载模块内容,结合 resolveId 使用

  • transform(code,id),在模块加载后对内容进行转换,返回转换后的代码和 source map

  • buildEnd(),构建结束的时候调用,可以清理或生成额外的文件

  • generateBundle(options, bundle),在输出生成文件的时候调用,适合在打包完成后对生成的文件进行分析和修改

  • writeBundle(),输出文件写入磁盘后调用,用于执行与文件输出相关的操作

  • closeBundle(),构建任务完成时调用,可以在这里做一些清理操作

# Vite 特有的钩子

  • config(config, ({ command, mode })),修改配置的文件内容

  • configResolved(resolvedConfig),vite 配置解析完成后调用,可以读取最终的配置

  • configureServer(server),用于配置开发服务器,可以添加自定义请求或中间件

  • transformIndexHtml(html, ({ filename, server })),用于在开发阶段或构建阶段,对 index.html 文件内容进行转换

  • handleHotUpdate({ file, server, modules }),热更新(HMR)的时候调用,可以自定义 hmr 行为

# 生产环境钩子

  • renderChunk(code, chunk, options),在单个 chunk 生成后调用,可以修改 chunk 的内容

  • closeWatcher(),关闭文件监听时调用,通常用于清理资源

# Vite 其他独有钩子

  • watchChange(id, { event }),当监听的文件发生变化的时候调用

  • resolveFileUrl({ chunkId, moduleId, relativePath, format }),在处理文件导入时自定义文件 URL

  • resolveImportMeta(property, { chunkId, moduleId }),自定义 import.meta 的处理逻辑