全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-23 6 分钟 ✍️ juanwangdev

插件概念与生命周期

Vite 插件基于 Rollup 插件接口扩展,支持开发和构建阶段的不同钩子。

插件基础结构

JavaScript
function myPlugin() {
  return {
    name: 'my-plugin',  // 插件名称(必需)
    // 钩子函数...
  }
}

双阶段钩子

阶段环境钩子类型
serve开发环境Vite 特有钩子
build生产构建Rollup 钩子

Vite 特有钩子

JavaScript
{
  // 配置解析前调用
  config(config, { command, mode }) {
    return { // 返回部分配置合并
    }
  },

  // 配置解析后调用
  configResolved(resolvedConfig) {
    // 可访问最终配置
  },

  // 配置服务器
  configureServer(server) {
    // 开发服务器实例
  },

  // 转换索引 HTML
  transformIndexHtml(html) {
    return html  // 或返回标签数组
  }

  // 处理 HMR 更新
  handleHotUpdate({ file, server, modules }) {
    // 自定义热更新行为
  }
}

Rollup 兼容钩子

JavaScript
{
  // 模块路径解析
  resolveId(source, importer) {
    return null  // 返回 null 使用默认解析
  },

  // 加载模块内容
  load(id) {
    return null  // 返回 null 使用默认加载
  },

  // 转换模块代码
  transform(code, id) {
    return code  // 返回转换后的代码
  }
}

注意:Vite 插件可同时使用 Vite 钩子和 Rollup 钩子。

钩子执行顺序

JavaScript
config → configResolved → configureServer →
resolveId → load → transform →
handleHotUpdate(热更新时)

强制钩子顺序

text
{
  name: 'my-plugin',
  enforce: 'pre',  // pre/post/默认
  // 钩子...
}
enforce执行顺序
pre核心插件之前
默认核心插件之后
post其他插件之后

要点总结

  • Vite 插件兼容 Rollup 插件接口
  • 具有开发环境和构建环境双阶段钩子
  • config/configResolved 用于配置阶段
  • resolveId/load/transform 用于模块处理

📝 发现内容有误?点击此处直接编辑

← 上一篇 插件条件应用
下一篇 → 社区插件集成
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库