43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import path from "node:path"
|
|
import { defineConfig, loadEnv } from "vite"
|
|
import uni from "@dcloudio/vite-plugin-uni"
|
|
import UnoCSS from "unocss/vite"
|
|
|
|
/** 按当前模式读取后端地址;保留目标自带的 /api 等路径,只移除浏览器请求的代理前缀。 */
|
|
function createApiProxy(mode: string) {
|
|
/** 沿用参考项目的 .env 变量,由 Vite 按运行模式加载,开发服务器只转发到开发后端。 */
|
|
const env = loadEnv(mode, __dirname, "VITE_")
|
|
const apiTarget = (env.VITE_APP_DEV_SERVICE || "").trim().replace(/\/+$/, "")
|
|
/** 与请求层共用 .env 中的本地接口前缀,默认 /api。 */
|
|
const apiPrefix = (env.VITE_API_URL || "/api").trim().replace(/\/+$/, "")
|
|
return apiTarget ? {
|
|
[apiPrefix]: {
|
|
target: apiTarget,
|
|
changeOrigin: true,
|
|
/** 微服务的 /third 与单体服务的无前缀路径由请求层决定,代理只移除本地前缀。 */
|
|
rewrite: (requestPath: string) => requestPath.slice(apiPrefix.length),
|
|
},
|
|
} : undefined
|
|
}
|
|
|
|
/** H5 独立开发端口避开参考 App 的 8889,别名沿用其业务目录约定 */
|
|
export default defineConfig(({ mode }) => ({
|
|
plugins: [uni(), UnoCSS()],
|
|
resolve: {
|
|
alias: {
|
|
"@": path.resolve(__dirname, "src"),
|
|
"@@": path.resolve(__dirname, "src/sheep"),
|
|
},
|
|
},
|
|
server: {
|
|
host: "0.0.0.0",
|
|
port: 8890,
|
|
strictPort: true,
|
|
proxy: createApiProxy(mode),
|
|
},
|
|
build: {
|
|
target: "es2018",
|
|
sourcemap: false,
|
|
},
|
|
}))
|