本文最后更新于106 天前,其中的信息可能已经过时,如有错误请发送邮件到1986413837@qq.com
准备阶段 -> 加工阶段(循环) -> 收尾阶段



Q1: Vite 的插件和 Webpack 插件有什么区别?
- 答:Vite 在开发环境使用 esbuild(快),在生产环境使用 Rollup(包小)。Vite 的插件接口设计是兼容 Rollup 的,而 Webpack 是基于 Tapable 的钩子系统,两者写法完全不同。
Q2: transform 钩子是做什么的?
- 答:它是最核心的代码转换钩子。比如我们在项目中写 TypeScript,浏览器看不懂,Vite 就会在
transform钩子里调用 esbuild 或 babel 把 TS 转译成 JS。
Q3: 开发环境(Dev)和生产环境(Build)插件行为一样吗?
- 答:不一样! 这是坑点。
- 生产环境:跑完整的 Rollup 打包流程(上述所有钩子都会跑)。
- 开发环境:Vite 启动一个 HTTP Server。它不会生成 dist 文件,所以
closeBundle在开发环境(npm run dev)通常是不会触发的! - (这也解释了为什么你的 version.json 只有在打包后才有,开发时看不到)