环境变量

Renderer-public VITE 变量、main-process MAIN_VITE 变量与 Edge secrets。

Electron 有多个环境边界。renderer 使用的值会被打进客户端代码,main process 使用的值会被编译进 Electron main bundle,服务端 secret 则必须完全留在应用外部。

模型

  • .env 位于项目根目录,由 Vite/electron-vite 读取。
  • VITE_* 是 renderer-public,会随应用 bundle 发布。
  • MAIN_VITE_* 是 main-process 构建期配置。
  • Creem API keys 与 webhook secrets 是 Supabase Edge secrets,不是 app env。
  • 打包与签名变量是 electron-builder 或 CI 使用的发布期环境变量。

Supabase URL 与 publishable key 可以随应用发布,因为授权由 Row Level Security 强制执行。Supabase service-role key 不能发布,绝不能放进 .env

起始 .env

VITE_AUTH_ENABLED=true
VITE_AUTO_UPDATE_ENABLED=true

VITE_SUPABASE_URL=https://your-project-ref.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=your-publishable-anon-key

MAIN_VITE_SENTRY_DSN=

VITE_ANALYTICS_ENDPOINT=
VITE_ANALYTICS_WRITE_KEY=

VITE_REPO_URL=

VITE_BILLING_ENABLED=false
VITE_BILLING_LICENSE_MODE=false
VITE_CREEM_PRODUCT_PRO_MONTHLY=prod_xxx
VITE_CREEM_PRODUCT_PRO_YEARLY=prod_xxx
VITE_CREEM_PRODUCT_LIFETIME=prod_xxx

VITE_SHOWCASE_ENABLEDMAIN_VITE_SHOWCASE_ENABLED 会被代码读取,但当前 不在 .env.example 中。要预览或构建没有可删除演示层的应用时,请同时添加两项。

VITE_SHOWCASE_ENABLED=false
MAIN_VITE_SHOWCASE_ENABLED=false

App env reference

Feature flags

Prop

Type

Supabase

Prop

Type

这些值会解锁邮箱认证、profile 读写、avatar 上传、todos 与 subscription reads。 设置页会说明应用期望的 SQL 与 storage bucket。

Creem product IDs

Prop

Type

Product IDs 不是 secrets。shared/price-config.ts 把它们映射到 plan tiers; 未知或缺失的 product ID 会解析为 free,避免未配置构建意外解锁付费功能。

Observability、analytics 与 support

Prop

Type

Non-app env

Supabase Edge secrets

这些值用 supabase secrets set 或 Edge secret env file 设置。它们由 supabase/functions/ 下的函数读取,绝不能打进桌面应用。

Prop

Type

Packaging、updates 与 signing

Prop

Type

Test-only

Prop

Type

安全发布检查

可以进入 app bundle?原因
Supabase URL可以标识项目 endpoint。
Supabase publishable key可以面向客户端;RLS 决定用户能访问哪些 rows。
Creem product IDs可以只是产品标识,本身不能创建 checkout sessions。
Sentry DSN可以,但要有 opt-in policyDSN 是 ingest 地址,不是签名 secret。是否上报由用户 opt-in 控制。
Analytics write key当作公开值如果设置,它会发布到 renderer。只用于低风险 client ingestion。
Supabase service-role key不可以会绕过 RLS 并写入受保护数据,只能留在服务端。
Creem API key/webhook secret不可以provider 操作与签名校验的服务端凭据。
代码签名证书/密码不可以CI 或本地签名环境的发布 secret。

相关页面

On this page