93 lines
2.4 KiB
TypeScript
93 lines
2.4 KiB
TypeScript
import { defineConfig } from 'vite'
|
||
import vue from '@vitejs/plugin-vue'
|
||
import { resolve } from 'path'
|
||
import { fileURLToPath, URL } from 'node:url'
|
||
import Icons from 'unplugin-icons/vite'
|
||
import IconsResolver from 'unplugin-icons/resolver'
|
||
import Components from 'unplugin-vue-components/vite'
|
||
import fs from 'node:fs'
|
||
import path from 'node:path'
|
||
|
||
// 读取 apps.txt 确定应用优先级(靠后优先)
|
||
function loadAppsOrder(appsDir: string) {
|
||
const appsTxt = path.join(appsDir, 'apps.txt')
|
||
try {
|
||
const content = fs.readFileSync(appsTxt, 'utf-8')
|
||
return content
|
||
.split(/\r?\n/)
|
||
.map((s) => s.trim())
|
||
.filter(Boolean)
|
||
} catch {
|
||
return ['jingrow']
|
||
}
|
||
}
|
||
|
||
// 计算本工程中的 apps 目录(当前文件位于 apps/jingrow/frontend/vite.config.ts)
|
||
const currentDir = fileURLToPath(new URL('.', import.meta.url))
|
||
const appsDir = path.resolve(currentDir, '..', '..')
|
||
const APPS_ORDER = loadAppsOrder(appsDir)
|
||
|
||
export default defineConfig({
|
||
plugins: [
|
||
vue(),
|
||
Icons({
|
||
autoInstall: true,
|
||
compiler: 'vue3'
|
||
}),
|
||
Components({
|
||
resolvers: [
|
||
IconsResolver({
|
||
prefix: 'i',
|
||
enabledCollections: ['tabler']
|
||
}),
|
||
],
|
||
}),
|
||
],
|
||
resolve: {
|
||
alias: {
|
||
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
||
// 跨 app 访问源码(相对计算得到的 apps 目录)
|
||
'@apps': appsDir
|
||
}
|
||
},
|
||
server: {
|
||
host: '0.0.0.0',
|
||
port: 3002,
|
||
strictPort: true,
|
||
open: false,
|
||
cors: true,
|
||
fs: {
|
||
// 放行 monorepo apps 目录,便于 import.meta.glob 跨应用扫描
|
||
allow: [appsDir]
|
||
},
|
||
allowedHosts: ['code.jingrow.com'],
|
||
proxy: {
|
||
'/api/action': {
|
||
target: process.env.VITE_JINGROW_SERVER_URL || 'http://192.168.2.58',
|
||
changeOrigin: true,
|
||
secure: false
|
||
},
|
||
'/api/data': {
|
||
target: process.env.VITE_BACKEND_SERVER_URL || 'http://localhost:9001',
|
||
changeOrigin: true,
|
||
secure: false
|
||
},
|
||
'/jingrow': {
|
||
target: process.env.VITE_BACKEND_SERVER_URL || 'http://localhost:9001',
|
||
changeOrigin: true,
|
||
secure: false
|
||
}
|
||
}
|
||
},
|
||
build: {
|
||
outDir: 'dist',
|
||
assetsDir: 'assets'
|
||
},
|
||
define: {
|
||
// 确保环境变量在构建时可用
|
||
__APP_VERSION__: JSON.stringify(process.env.npm_package_version),
|
||
// 注入 apps.txt 的应用顺序到前端
|
||
__APPS_ORDER__: JSON.stringify(APPS_ORDER)
|
||
}
|
||
})
|