ant-design-vue/components/_util/cssinjs/hooks/useHMR.ts

46 lines
1008 B
TypeScript

function useProdHMR() {
return false;
}
let webpackHMR = false;
let viteHMR = false;
function useDevHMR() {
return webpackHMR || viteHMR;
}
export default process.env.NODE_ENV === 'production' ? useProdHMR : useDevHMR;
// Webpack `module.hot.accept` do not support any deps update trigger
// We have to hack handler to force mark as HRM
if (
process.env.NODE_ENV !== 'production' &&
typeof module !== 'undefined' &&
module &&
// @ts-ignore
module.hot
) {
const win = window as any;
if (typeof win.webpackHotUpdate === 'function') {
const originWebpackHotUpdate = win.webpackHotUpdate;
win.webpackHotUpdate = (...args: any[]) => {
webpackHMR = true;
setTimeout(() => {
webpackHMR = false;
}, 0);
return originWebpackHotUpdate(...args);
};
// @ts-ignore
} else if (import.meta.hot) {
// @ts-ignore
import.meta.hot.accept(() => {
viteHMR = true;
setTimeout(() => {
viteHMR = false;
}, 0);
});
}
}