mirror of
https://github.com/basketikun/infinite-canvas.git
synced 2026-07-28 19:14:30 +08:00
31 lines
1.3 KiB
TypeScript
31 lines
1.3 KiB
TypeScript
// 运行期配置读取层。
|
||
// 优先级:window.__RUNTIME_CONFIG__(容器启动时由 entrypoint 注入)> 构建期 VITE_ 变量 > 默认值。
|
||
// 这样既支持「同一镜像 docker run -e 配置」,也兼容自行 build 时的构建期注入。
|
||
//
|
||
// 统计按「每家一个独立变量」配置:填了谁就启用谁,可同时启用多家,默认全空即关闭。
|
||
// 仅支持 GA4 与百度:两者都只接受 ID,脚本地址由代码固定拼接,不接受任意脚本/内联 JS。
|
||
|
||
type RuntimeConfig = {
|
||
ANALYTICS_GA4_ID?: string; // GA4 衡量 ID(G-XXXX)
|
||
ANALYTICS_BAIDU_ID?: string; // 百度统计站点 ID
|
||
};
|
||
|
||
declare global {
|
||
interface Window {
|
||
__RUNTIME_CONFIG__?: RuntimeConfig;
|
||
}
|
||
}
|
||
|
||
const runtime: RuntimeConfig = (typeof window !== "undefined" && window.__RUNTIME_CONFIG__) || {};
|
||
|
||
function read(key: keyof RuntimeConfig, buildTime: string | undefined, fallback = ""): string {
|
||
const value = runtime[key];
|
||
if (typeof value === "string" && value.trim()) return value.trim();
|
||
if (typeof buildTime === "string" && buildTime.trim()) return buildTime.trim();
|
||
return fallback;
|
||
}
|
||
|
||
export const ANALYTICS_GA4_ID = read("ANALYTICS_GA4_ID", import.meta.env.VITE_ANALYTICS_GA4_ID);
|
||
export const ANALYTICS_BAIDU_ID = read("ANALYTICS_BAIDU_ID", import.meta.env.VITE_ANALYTICS_BAIDU_ID);
|
||
|