前后端基本架构和完全excel表的解析及统计图表的生成以及excel表的到出
This commit is contained in:
140
frontend/vite.config.dev.ts
Normal file
140
frontend/vite.config.dev.ts
Normal file
@@ -0,0 +1,140 @@
|
||||
|
||||
import * as vite from 'vite';
|
||||
import { defineConfig, loadConfigFromFile } from "vite";
|
||||
import type { Plugin, ConfigEnv } from "vite";
|
||||
import tailwindcss from "tailwindcss";
|
||||
import autoprefixer from "autoprefixer";
|
||||
import fs from "fs/promises";
|
||||
import path from "path";
|
||||
import {
|
||||
makeTagger,
|
||||
injectedGuiListenerPlugin,
|
||||
injectOnErrorPlugin,
|
||||
monitorPlugin
|
||||
} from "miaoda-sc-plugin";
|
||||
|
||||
const env: ConfigEnv = { command: "serve", mode: "development" };
|
||||
const configFile = path.resolve(__dirname, "vite.config.ts");
|
||||
const result = await loadConfigFromFile(env, configFile);
|
||||
const userConfig = result?.config;
|
||||
|
||||
const viteVersionInfo = {
|
||||
version: vite.version,
|
||||
rollupVersion: (vite as any).rollupVersion ?? null,
|
||||
rolldownVersion: (vite as any).rolldownVersion ?? null,
|
||||
isRolldownVite: 'rolldownVersion' in vite
|
||||
};
|
||||
|
||||
export default defineConfig({
|
||||
...userConfig,
|
||||
define: {
|
||||
__VITE_INFO__: JSON.stringify(viteVersionInfo),
|
||||
...(userConfig?.define || {})
|
||||
},
|
||||
// 将 Vite 缓存目录设置为项目本地目录,避免在 /workspace/node_modules/ 下创建
|
||||
cacheDir: path.resolve(__dirname, "node_modules/.vite"),
|
||||
plugins: [
|
||||
makeTagger(),
|
||||
injectedGuiListenerPlugin({
|
||||
path: 'https://resource-static.cdn.bcebos.com/common/v2/injected.js'
|
||||
}),
|
||||
injectOnErrorPlugin(),
|
||||
...(userConfig?.plugins || []),
|
||||
|
||||
{
|
||||
name: 'hmr-toggle',
|
||||
configureServer(server) {
|
||||
let hmrEnabled = true;
|
||||
|
||||
// 包装原来的 send 方法
|
||||
const _send = server.ws.send;
|
||||
server.ws.send = (payload) => {
|
||||
if (hmrEnabled) {
|
||||
return _send.call(server.ws, payload);
|
||||
} else {
|
||||
console.log('[HMR disabled] skipped payload:', payload.type);
|
||||
}
|
||||
};
|
||||
|
||||
// 提供接口切换 HMR
|
||||
server.middlewares.use('/innerapi/v1/sourcecode/__hmr_off', (req, res) => {
|
||||
hmrEnabled = false;
|
||||
let body = {
|
||||
status: 0,
|
||||
msg: 'HMR disabled'
|
||||
};
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
res.end(JSON.stringify(body));
|
||||
});
|
||||
|
||||
server.middlewares.use('/innerapi/v1/sourcecode/__hmr_on', (req, res) => {
|
||||
hmrEnabled = true;
|
||||
let body = {
|
||||
status: 0,
|
||||
msg: 'HMR enabled'
|
||||
};
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
res.end(JSON.stringify(body));
|
||||
});
|
||||
|
||||
// 注册一个 HTTP API,用来手动触发一次整体刷新
|
||||
server.middlewares.use('/innerapi/v1/sourcecode/__hmr_reload', (req, res) => {
|
||||
if (hmrEnabled) {
|
||||
server.ws.send({
|
||||
type: 'full-reload',
|
||||
path: '*', // 整页刷新
|
||||
});
|
||||
}
|
||||
res.statusCode = 200;
|
||||
let body = {
|
||||
status: 0,
|
||||
msg: 'Manual full reload triggered'
|
||||
};
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
res.end(JSON.stringify(body));
|
||||
});
|
||||
},
|
||||
load(id) {
|
||||
if (id === 'virtual:after-update') {
|
||||
return `
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.on('vite:afterUpdate', () => {
|
||||
window.postMessage(
|
||||
{
|
||||
type: 'editor-update'
|
||||
},
|
||||
'*'
|
||||
);
|
||||
});
|
||||
}
|
||||
`;
|
||||
}
|
||||
},
|
||||
transformIndexHtml(html) {
|
||||
return {
|
||||
html,
|
||||
tags: [
|
||||
{
|
||||
tag: 'script',
|
||||
attrs: {
|
||||
type: 'module',
|
||||
src: '/@id/virtual:after-update'
|
||||
},
|
||||
injectTo: 'body'
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
},
|
||||
,
|
||||
monitorPlugin(
|
||||
{
|
||||
scriptSrc: 'https://resource-static.cdn.bcebos.com/sentry/browser.sentry.min.js',
|
||||
sentryDsn: 'https://e3c07b90fcb5207f333d50ac24a99d3e@sentry.miaoda.cn/233',
|
||||
environment: 'undefined',
|
||||
appId: 'app-a6ww9j3ja3nl'
|
||||
}
|
||||
)
|
||||
]
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user