钩子
2023年12月19日
一、认识
其中 Vite
会调用一系列与 Rollup
兼容的钩子,这个钩子主要分为三个阶段:
-
服务器启动阶段:
options
和buildStart
钩子会在服务启动时被调用 -
请求响应阶段: 当浏览器发起请求时,
Vite
内部依次调用resolveId
、load
和transform
钩子 -
服务器关闭阶段:
Vite
会依次执行buildEnd
和closeBundle
钩子。
除了以上钩子,其他 Rollup
插件钩子(如moduleParsed
、renderChunk
)均不会在 Vite
开发阶段调用。而生产环境下,由于 Vite
直接使用 Rollup
,Vite
插件中所有 Rollup
的插件钩子都会生效。
1.1 执行顺序
Preview
-
服务启动阶段:
config
(Vite
独有)、configResolved
(Vite
独有)、options
、configureServer
(Vite
独有)、buildStart
-
请求响应阶段: 如果是
html
文件,仅执行transformIndexHtml
钩子;对于非HTML
文件,则依次执行resolveId
、load
和transform
钩子 -
热更新阶段: 执行
handleHotUpdate
钩子。 -
服务关闭阶段: 依次执行
buildEnd
和closeBundle
钩子
1.2 应用场景
默认情况下 Vite
插件同时被用于开发环境和生产环境,你可以通过 apply
属性来决定应用场景:
{
// 'serve' 表示仅用于开发环境,'build'表示仅用于生产环境
apply: 'serve'
}