Skip to main content
脚手架在启动时用 @t3-oss/env-nextjs + Zod 校验环境变量。完整 schema 在 src/env.ts——以那个文件为准。本页是它的镜像,按类别组织,方便你一次复制粘贴,搞定 .env.local (和 prod env)。 约定几条:
  • 必填变量缺失或为空时启动报错。
  • 可选变量默认为空字符串,对应模块静默 no-op。
  • NEXT_PUBLIC_* 变量会进浏览器。永远别在里面放 secret。
  • CI build 步骤如果不需要真实值(Vercel preview build、Docker bake 等),设 SKIP_ENV_VALIDATION=true 跳过校验。

Core

App 启动的最小集合。

OAuth

每个 provider 独立——id + secret 都填启用,留空隐藏。

邮件(Mail)

默认 Resend。RESEND_API_KEY 为空时邮件 facade 静默 no-op。

Newsletter — Beehiiv

只在 siteConfig.newsletter.provider = 'beehiiv' 时生效。

支付 — Stripe

默认 provider。只有你实际在卖的 *_PRICE_* id 才需要填。

支付 — Creem

仅当 siteConfig.payment.provider = 'creem' 时生效。

AI providers

AI_PROVIDER 切换 provider。mock 默认无需 key 也能流式输出假 token, demo 页面开箱即用。

存储(S3 / R2)

默认是 stub——需要上传或签名下载时再接上。

反 bot — Cloudflare Turnstile

两把 key 都填,启用 Turnstile 在 signup、forgot-password、newsletter 表单。

客服

每次只挂一个,由 siteConfig.customerService.provider 决定。每个 widget 自检 env 变量。

联盟(Affiliate)

siteConfig.affiliate.provider 选哪个,就填哪个对应的变量。internal provider 不需要 env 变量。

分析(Analytics)

每个脚本仅在自己 env 变量有值时挂载。可任意混搭。

搜索引擎站长工具验证

每个变量通过 Next.js metadata.verification<head> 渲染一个 <meta> 标签, 用来在对应站长后台证明所有权。服务端 env 变量(不带 NEXT_PUBLIC_ 前缀), 留空就不渲染对应标签。

GitHub 邀请分发

买家流程用它把付费用户加进你的源码私有 repo 当只读 collaborator。完整配置见 GitHub 邀请分发

杂项

另见

  • Vercel 部署 —— 生产环境去哪粘。
  • Cloudflare 部署 —— 每个 secret 用 wrangler secret put
  • 配置 —— siteConfig 开关决定哪个 provider 读哪些 key。