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}`;
}