From 9a1e267e1289d44000965d0bf17ccf649e0551f7 Mon Sep 17 00:00:00 2001 From: shizhongming Date: Wed, 7 Feb 2024 23:00:36 +0800 Subject: [PATCH] =?UTF-8?q?build(=E6=9E=B6=E6=9E=84):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=83=AD=E6=9B=B4=E6=96=B0=E6=8F=92=E4=BB=B6=EF=BC=8C=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E6=AF=8F=E6=AC=A1=E4=BF=AE=E6=94=B9=E9=83=BD=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E9=87=8D=E6=96=B0=E5=88=B7=E6=96=B0=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/vite-config/src/plugins/hmr.ts | 24 +++++++++++++++++++++++ internal/vite-config/src/plugins/index.ts | 5 +++++ 2 files changed, 29 insertions(+) create mode 100644 internal/vite-config/src/plugins/hmr.ts diff --git a/internal/vite-config/src/plugins/hmr.ts b/internal/vite-config/src/plugins/hmr.ts new file mode 100644 index 000000000..f5b5fa219 --- /dev/null +++ b/internal/vite-config/src/plugins/hmr.ts @@ -0,0 +1,24 @@ +import type { Plugin } from 'vite'; + +/** + * TODO + * Temporarily solve the Vite circular dependency problem, and wait for a better solution to fix it later. I don't know what problems this writing will bring. + * @returns + */ + +export function configHmrPlugin(): Plugin { + return { + name: 'singleHMR', + handleHotUpdate({ modules, file }) { + if (file.match(/xml$/)) return []; + if (file.match(/\.(ts|js)/)) return undefined; + + modules.forEach((m) => { + if (!m.url.match(/\.(css|less)/)) { + m.importers = new Set(); + } + }); + return modules; + }, + }; +} diff --git a/internal/vite-config/src/plugins/index.ts b/internal/vite-config/src/plugins/index.ts index b13fb399e..53d6b2af9 100644 --- a/internal/vite-config/src/plugins/index.ts +++ b/internal/vite-config/src/plugins/index.ts @@ -5,6 +5,7 @@ import purgeIcons from 'vite-plugin-purge-icons'; import { createAppConfigPlugin } from './appConfig'; import { configCompressPlugin } from './compress'; +import { configHmrPlugin } from './hmr'; import { configHtmlPlugin } from './html'; import { configMockPlugin } from './mock'; import { configSvgIconsPlugin } from './svgSprite'; @@ -53,6 +54,10 @@ async function createPlugins({ isBuild, root, enableMock, compress, enableAnalyz vitePlugins.push(configMockPlugin({ isBuild })); } + if (!isBuild) { + vitePlugins.push(configHmrPlugin()); + } + return vitePlugins; }