From 0131c34daa197c91b2abf52e78cd1720ba232b21 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 06 5月 2025 07:44:29 +0800
Subject: [PATCH] 222
---
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