base.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import type { Plugin } from "vite";
  2. import { createSvg } from "./svg";
  3. import { createTag } from "./tag";
  4. import { createEps } from "./eps";
  5. import { createMenu } from "./menu";
  6. import { parseJson } from "./utils";
  7. export function base(): Plugin {
  8. return {
  9. name: "vite-cool-base",
  10. enforce: "pre",
  11. configureServer(server) {
  12. server.middlewares.use(async (req, res, next) => {
  13. function done(data: any) {
  14. res.writeHead(200, { "Content-Type": "text/html;charset=UTF-8" });
  15. res.end(JSON.stringify(data));
  16. }
  17. if (req.url?.includes("__cool")) {
  18. const body = await parseJson(req);
  19. switch (req.url) {
  20. // 快速创建菜单
  21. case "/__cool_createMenu":
  22. await createMenu(body);
  23. break;
  24. // 创建描述文件
  25. case "/__cool_eps":
  26. await createEps(body);
  27. break;
  28. default:
  29. return done({
  30. code: 1001,
  31. message: "未知请求"
  32. });
  33. }
  34. done({
  35. code: 1000
  36. });
  37. } else {
  38. next();
  39. }
  40. });
  41. },
  42. transform(code, id) {
  43. return createTag(code, id);
  44. },
  45. transformIndexHtml(html) {
  46. return createSvg(html);
  47. }
  48. };
  49. }