From a8fb30431d58ec7a9d7d84cac0d95d4c22d05628 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周二, 06 5月 2025 14:51:18 +0800 Subject: [PATCH] 22 --- HIAWms/web/vite.config.ts | 62 ++++++++++++++++++++++++++----- 1 files changed, 52 insertions(+), 10 deletions(-) diff --git a/HIAWms/web/vite.config.ts b/HIAWms/web/vite.config.ts index b26343d..c0925aa 100644 --- a/HIAWms/web/vite.config.ts +++ b/HIAWms/web/vite.config.ts @@ -15,11 +15,51 @@ const isWin = process.platform === 'win32' const appPath = slash(path.resolve(process.cwd(), 'app')) -const runGoServer = () => { + +const getPort: () => Promise<string> = () => { const child: ChildProcess = crossSpawn( isWin - ? '..\\node_modules\\lmes-create-widget\\www' - : '../node_modules/lmes-create-widget/www', + ? '..\\node_modules\\lmes-create-widget\\port' + : '../node_modules/lmes-create-widget/port', + [], //娣诲姞绔彛鍜岀幆澧冨彉閲忓弬鏁� + { + cwd: appPath, + shell: true, + env: { + ENV: 'production', + }, + } + ) + + let output = '' + return new Promise((resolve, reject) => { + // 鑾峰彇瀛愯繘绋嬬殑鏍囧噯杈撳嚭 + child.stdout?.on('data', (data) => { + output += data.toString() + }) + + child.stderr?.on('data', (data) => { + console.error('stderr:', data.toString()) + }) + + child.on('close', (code) => { + if (code === 0) { + const port = output.split('\n')[0] + console.log('PROJECT_PORT:', port) + resolve(port) + } else { + reject(code) + } + }) + }) +} + +const runGoServer = (projectPort: string) => { + const child: ChildProcess = crossSpawn( + isWin + ? `..\\node_modules\\lmes-create-widget\\www ${projectPort}` + : `../node_modules/lmes-create-widget/www ${projectPort}`, + [], //娣诲姞绔彛鍜岀幆澧冨彉閲忓弬鏁� { stdio: 'inherit', cwd: appPath, @@ -43,29 +83,30 @@ process.exit(0) } } -const run = () => { +const run = (projectPort: string) => { try { - runGoServer() + runGoServer(projectPort) let lastPressTime = Date.now() process.on('SIGINT', async () => { const currentTime = Date.now() if (lastPressTime && currentTime - lastPressTime < 2000) { - killGoServer(8800) + killGoServer(Number(projectPort)) } else { lastPressTime = Date.now() } }) process.on('SIGTERM', () => { console.log('杩涚▼琚� kill 缁堟...') - killGoServer(8800) + killGoServer(Number(projectPort)) }) } catch (error) { console.error(error) } } -run() // @ts-ignore -export default defineConfig(({ mode }) => { +export default defineConfig(async ({ mode }) => { + const projectPort = await getPort() + run(projectPort) const env = loadEnv(mode, __dirname) console.info('[mode]', mode) console.info('[env]', env) @@ -77,6 +118,7 @@ // requireTransform({}), vueJsx(), vue({ + // @ts-ignore reactivityTransform: path.resolve(__dirname, 'src'), }), VueTypeImports(), @@ -138,7 +180,7 @@ ws: true, }, '/projectApi': { - target: env.VITE_PROJECT_API_URL, + target: `http://127.0.0.1:${projectPort}`, changeOrigin: true, ws: true, }, -- Gitblit v1.9.3