用途:在 Latitude 项目中新增或读取环境变量、更新 .env.example,以及在启动时校验配置。
前缀约定:所有应用环境变量必须加 LAT_ 前缀,避免与第三方服务、Docker 或常见名称冲突。适用对象包括数据库 URL 与连接池设置(LAT_DATABASE_URL、LAT_PG_POOL_MAX)、应用读取的服务端点(LAT_CLICKHOUSE_URL、LAT_REDIS_HOST)、应用端口(LAT_API_PORT、LAT_WEB_PORT、LAT_INGEST_PORT)、认证/邮件/OAuth/计费/CORS(LAT_BETTER_AUTH_SECRET、LAT_MAILPIT_HOST)以及任何被 Latitude 应用代码消费的新变量。不要加 LAT_ 的包括 NODE_ENV、仅 Docker 使用的初始化变量(POSTGRES_USER、CLICKHOUSE_USER 等)、仅容器镜像读取的配置(Weaviate、compose 中的 Redis 等)。浏览器暴露的 Vite 变量使用 VITE_LAT_*,因为 Vite 要求 VITE_ 前缀。
.env.example 维护:每个新变量都必须出现在 .env.example 中。必填项取消注释并给出合理的本地默认值(如 LAT_API_PORT=3001);可选项以注释加占位符形式给出(如 # LAT_STRIPE_SECRET_KEY=sk_test_xxx)。
自托管同步:自托管者通过这些环境变量配置 Latitude,因此新增、重命名或删除变量时,除 .env.example 外还需同步更新配置参考文档 docs/deployment/configuration.mdx(仅限 Latitude 自有云部署的支付/Stripe、营销邮件 Loops、支持聊天 Intercom、内部分析观测 PostHog/Datadog/OTEL/GTM/Framer/ipinfo 等不进入自托管文档),以及 Helm chart charts/latitude/:非机密放入 templates/configmap.yaml(若为一等设置还需 values.yaml 开关),机密放入 templates/secret.yaml 及 chart README 的 existingSecret 键列表,可选或罕见变量无需改模板,已有 config.extraEnv / secrets.extra 透传即可。docker-stack.yml 无需逐变量修改,但新增必填变量须写入 .env.example 的生产指引;Railway 模板在面板中维护,无需改仓库。
代码解析:始终使用 @platform/env 的 parseEnv 或 parseEnvOptional,不要直接访问 process.env.FOO 或使用无前缀名称。示例:import { parseEnv, parseEnvOptional } from "@platform/env";const port = Effect.runSync(parseEnv("LAT_API_PORT", "number", 3001));const dbUrl = Effect.runSync(parseEnv("LAT_DATABASE_URL", "string"))。parseEnv 内部读取 process.env,传入变量名字符串。配置在应用中的接线位置参见 architecture-boundaries。