staticAsset.ts
881 Bytes
import { getApiBase } from "@/config/api";
function normalizeBase(url: string): string {
return url.trim().replace(/\/+$/, "");
}
function getStaticBase(): string {
const fromEnv = typeof import.meta.env.VITE_STATIC_BASE_URL === "string"
? normalizeBase(import.meta.env.VITE_STATIC_BASE_URL)
: "";
if (fromEnv) {
return fromEnv;
}
const apiBase = normalizeBase(getApiBase());
return apiBase ? `${apiBase}/assets/map` : "";
}
/**
* 将原先 /static/xxx 映射到后端静态目录:
* https://domain/assets/map/xxx
*/
export function staticAsset(input: string): string {
const p = (input || "").trim();
if (!p) {
return "";
}
if (/^https?:\/\//i.test(p)) {
return p;
}
const file = p
.replace(/^\/+/, "")
.replace(/^static\//, "");
const base = getStaticBase();
return base ? `${base}/${file}` : `/static/${file}`;
}