/** * 统一 HMR API * * 提供统一的 HMR 成功/失败回调接口,屏蔽 Webpack 和 Vite 的差异。 * * - Webpack/Rspack: 通过 import.meta.webpackHot 或 module.hot * - Vite: 通过 error-overlay 注入的 window.__VITE_HMR__ * * @see docs/RFC_HMR_API.md */ export interface HmrApi { /** * 注册 HMR 更新前回调(模块替换之前触发) * @param callback 回调函数 * @returns cleanup 函数,用于取消注册 */ onBeforeApply?(callback: () => void): () => void; /** * 注册 HMR 成功回调 * @param callback 成功回调函数 * @returns cleanup 函数,用于取消注册 */ onSuccess(callback: () => void): () => void; /** * 注册 HMR 失败回调 * @param callback 失败回调函数,参数为错误信息 * @returns cleanup 函数,用于取消注册 */ onError(callback: (error: unknown) => void): () => void; } declare global { interface Window { __VITE_HMR__?: Required; } } /** * 获取 HMR API 实例 * * 自动检测当前构建工具(Webpack/Vite)并返回对应实现: * - Webpack/Rspack: 使用内置适配器 * - Vite: 使用 error-overlay 注入的 window.__VITE_HMR__ * * @returns HmrApi 实例,如果不在开发环境或不支持 HMR 则返回 null */ export declare function getHmrApi(): HmrApi | null;