|
@@ -1,43 +1,42 @@
|
|
|
-import type { Plugin, ViteDevServer } from "vite";
|
|
|
+import type { Plugin } from "vite";
|
|
|
import { createEps } from "./eps";
|
|
|
import { createModule } from "./module";
|
|
|
|
|
|
export function virtual(): Plugin {
|
|
|
const virtualModuleIds = ["virtual:eps", "virtual:module"];
|
|
|
|
|
|
- // 使虚拟模块失效,重新加载
|
|
|
- function buildEps(server: ViteDevServer) {
|
|
|
- virtualModuleIds.forEach((vm) => {
|
|
|
- const mod = server.moduleGraph.getModuleById(`\0${vm}`);
|
|
|
-
|
|
|
- if (mod) {
|
|
|
- server.moduleGraph.invalidateModule(mod);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
return {
|
|
|
name: "vite-cool-virtual",
|
|
|
enforce: "pre",
|
|
|
configureServer(server) {
|
|
|
server.middlewares.use(async (req, res, next) => {
|
|
|
- // 页面刷新时触发 eps 刷新
|
|
|
+ // 页面刷新时触发
|
|
|
if (req.url == "/@vite/client") {
|
|
|
- buildEps(server);
|
|
|
+ // 重新加载虚拟模块
|
|
|
+ virtualModuleIds.forEach((vm) => {
|
|
|
+ const mod = server.moduleGraph.getModuleById(`\0${vm}`);
|
|
|
+
|
|
|
+ if (mod) {
|
|
|
+ server.moduleGraph.invalidateModule(mod);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
next();
|
|
|
});
|
|
|
},
|
|
|
- handleHotUpdate({ file, server }) {
|
|
|
- // 代码保存时触发 eps 刷新
|
|
|
+ async handleHotUpdate({ file, server }) {
|
|
|
+ // 代码保存时触发
|
|
|
if (!file.includes("build/cool/dist")) {
|
|
|
- buildEps(server);
|
|
|
+ const { service } = await createEps();
|
|
|
|
|
|
// 通知客户端刷新
|
|
|
server.ws.send({
|
|
|
type: "custom",
|
|
|
- event: "eps-update"
|
|
|
+ event: "eps-update",
|
|
|
+ data: {
|
|
|
+ service
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
},
|
|
@@ -48,10 +47,10 @@ export function virtual(): Plugin {
|
|
|
},
|
|
|
async load(id) {
|
|
|
if (id === "\0virtual:eps") {
|
|
|
- const { service, list } = await createEps();
|
|
|
+ const { service } = await createEps();
|
|
|
|
|
|
return `
|
|
|
- export const eps = ${JSON.stringify({ service, list })}
|
|
|
+ export const eps = ${JSON.stringify({ service })}
|
|
|
`;
|
|
|
}
|
|
|
|