mirror of
https://github.com/cool-team-official/cool-admin-vue.git
synced 2026-02-02 13:38:12 +00:00
解决eps本地不刷新问题
This commit is contained in:
parent
9f5ea9aff8
commit
bc1c18b415
@ -1,43 +1,42 @@
|
|||||||
import type { Plugin, ViteDevServer } from "vite";
|
import type { Plugin } from "vite";
|
||||||
import { createEps } from "./eps";
|
import { createEps } from "./eps";
|
||||||
import { createModule } from "./module";
|
import { createModule } from "./module";
|
||||||
|
|
||||||
export function virtual(): Plugin {
|
export function virtual(): Plugin {
|
||||||
const virtualModuleIds = ["virtual:eps", "virtual:module"];
|
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 {
|
return {
|
||||||
name: "vite-cool-virtual",
|
name: "vite-cool-virtual",
|
||||||
enforce: "pre",
|
enforce: "pre",
|
||||||
configureServer(server) {
|
configureServer(server) {
|
||||||
server.middlewares.use(async (req, res, next) => {
|
server.middlewares.use(async (req, res, next) => {
|
||||||
// 页面刷新时触发 eps 刷新
|
// 页面刷新时触发
|
||||||
if (req.url == "/@vite/client") {
|
if (req.url == "/@vite/client") {
|
||||||
buildEps(server);
|
// 重新加载虚拟模块
|
||||||
|
virtualModuleIds.forEach((vm) => {
|
||||||
|
const mod = server.moduleGraph.getModuleById(`\0${vm}`);
|
||||||
|
|
||||||
|
if (mod) {
|
||||||
|
server.moduleGraph.invalidateModule(mod);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
handleHotUpdate({ file, server }) {
|
async handleHotUpdate({ file, server }) {
|
||||||
// 代码保存时触发 eps 刷新
|
// 代码保存时触发
|
||||||
if (!file.includes("build/cool/dist")) {
|
if (!file.includes("build/cool/dist")) {
|
||||||
buildEps(server);
|
const { service } = await createEps();
|
||||||
|
|
||||||
// 通知客户端刷新
|
// 通知客户端刷新
|
||||||
server.ws.send({
|
server.ws.send({
|
||||||
type: "custom",
|
type: "custom",
|
||||||
event: "eps-update"
|
event: "eps-update",
|
||||||
|
data: {
|
||||||
|
service
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -48,10 +47,10 @@ export function virtual(): Plugin {
|
|||||||
},
|
},
|
||||||
async load(id) {
|
async load(id) {
|
||||||
if (id === "\0virtual:eps") {
|
if (id === "\0virtual:eps") {
|
||||||
const { service, list } = await createEps();
|
const { service } = await createEps();
|
||||||
|
|
||||||
return `
|
return `
|
||||||
export const eps = ${JSON.stringify({ service, list })}
|
export const eps = ${JSON.stringify({ service })}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -61,7 +61,7 @@
|
|||||||
"sass": "^1.66.1",
|
"sass": "^1.66.1",
|
||||||
"terser": "^5.19.2",
|
"terser": "^5.19.2",
|
||||||
"typescript": "^5.2.2",
|
"typescript": "^5.2.2",
|
||||||
"vite": "^4.4.9",
|
"vite": "^4.5.0",
|
||||||
"vite-plugin-compression": "^0.5.1"
|
"vite-plugin-compression": "^0.5.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -120,7 +120,10 @@ export function createEps(modules: Module[]) {
|
|||||||
|
|
||||||
// 监听 vite 触发事件
|
// 监听 vite 触发事件
|
||||||
if (import.meta.hot) {
|
if (import.meta.hot) {
|
||||||
import.meta.hot.on("eps-update", () => {
|
import.meta.hot.on("eps-update", ({ service }) => {
|
||||||
|
if (service) {
|
||||||
|
eps.service = service;
|
||||||
|
}
|
||||||
onUpdate();
|
onUpdate();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3806,10 +3806,10 @@ vite-plugin-compression@^0.5.1:
|
|||||||
debug "^4.3.3"
|
debug "^4.3.3"
|
||||||
fs-extra "^10.0.0"
|
fs-extra "^10.0.0"
|
||||||
|
|
||||||
vite@^4.4.9:
|
vite@^4.5.0:
|
||||||
version "4.4.9"
|
version "4.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d"
|
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26"
|
||||||
integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==
|
integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild "^0.18.10"
|
esbuild "^0.18.10"
|
||||||
postcss "^8.4.27"
|
postcss "^8.4.27"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user