前端开发
需要从 vite-flare-starter…
适用于以 Cloudflare Workers 为目标、希望用 vite-flare-starter 开箱即用模板快速获得带认证、数据库、对象存储和 AI 的全栈应用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要从 vite-flare-start特定
解决思路
- 关键命令:`pnpm dev` 启动本地开发;`pnpm build` 生产构建;`pnpm deploy` 部署到 Cloudflare;`pnpm db:migrate:local` 本地应用迁移;`pnpm db:migrate:remote` 生产应用迁移;`pnpm db:generate` 从 schema 变更生成迁移。
- 收集项目信息:必填项目名(kebab-case)、描述(一句话)、Cloudflare 账户;可选管理员邮箱、Google OAuth 凭证、自定义域名。
- 克隆模板并清理 git:`git clone https://github.com/jezweb/vite-flare-starter.git PROJECT_DIR --depth 1`,`cd PROJECT_DIR`,`rm -rf .git`,`git init`。
- 在 `wrangler.jsonc` 中把 worker 名 `"vite-flare-starter"` 替换为 `"PROJECT_NAME"`。
- 在 `wrangler.jsonc` 中把 `vite-flare-starter-db` 替换为 `PROJECT_NAME-db`。
- 在 `wrangler.jsonc` 中把 `vite-flare-starter-avatars` 替换为 `PROJECT_NAME-avatars`。
- 在 `wrangler.jsonc` 中把 `vite-flare-starter-files` 替换为 `PROJECT_NAME-files`。
- 在 `package.json` 中把 `"name": "vite-flare-starter"` 替换为 `"name": "PROJECT_NAME"`。
- 在 `package.json` 中把 `vite-flare-starter-db` 替换为 `PROJECT_NAME-db`。
- 在 `index.html` 中把 `<title>` 内容替换为应用显示名(Title Case)。
- 在 `wrangler.jsonc` 中移除硬编码的 `account_id` 行(让 wrangler 提示或使用环境变量)。
- 在 `wrangler.jsonc` 中把 `database_id` 值替换为 `REPLACE_WITH_YOUR_DATABASE_ID`。
- 把 `package.json` 版本重置为 `"0.1.0"`。
- 使用 Edit 工具执行替换(优先于 sed,避免 macOS/GNU 差异)。
- 生成 auth secret:`BETTER_AUTH_SECRET=$(openssl rand -hex 32 2>/dev/null || python3 -c "import secrets; print(secrets.token_hex(32))")`。
- 把 kebab-case 项目名转换为 Display 和 app_id:例如 `my-cool-app` 变为 Display `My Cool App`、ID `my_cool_app`。
- 创建 `.dev.vars`,写入:`BETTER_AUTH_SECRET=<generated>`、`BETTER_AUTH_URL=http://localhost:5173`、`GOOGLE_CLIENT_ID=`、`GOOGLE_CLIENT_SECRET=`,注释 `# ENABLE_EMAIL_LOGIN=true`、`# ENABLE_EMAIL_SIGNUP=true`,以及 `APP_NAME=<Display Name>`、`VITE_APP_NAME=<Display Name>`、`VITE_APP_ID=<app_id>`、`VITE_TOKEN_PREFIX=<app_id>_`、`VITE_GITHUB_URL=`、`VITE_FOOTER_TEXT=`、`NODE_ENV=development`。
- 可选创建 Cloudflare 资源:`npx wrangler d1 create PROJECT_NAME-db`(从输出提取 database_id 更新 `wrangler.jsonc`);`npx wrangler r2 bucket create PROJECT_NAME-avatars`;`npx wrangler r2 bucket create PROJECT_NAME-files`。
- 安装依赖并应用本地迁移:`pnpm install`,`pnpm run db:migrate:local`。
- 初始提交:`git add -A`,`git commit -m "Initial commit from vite-flare-starter"`。
- 手动配置 Google OAuth(如果使用):在 Google Cloud Console 创建 OAuth 2.0 Client ID,添加 redirect URI `http://localhost:5173/api/auth/callback/google`,复制 Client ID 和 Secret 到 `.dev.vars`。
- 替换 `public/favicon.svg`。
- 更新 `CLAUDE.md`:更新项目描述,移除 vite-flare-starter 引用。
- 更新 `index.html` 的 `<title>` 和 meta description。
- 本地验证:运行 `pnpm dev`,检查 `http://localhost:5173` 加载、显示你的应用名、注册/登录可用(如果配置 OAuth)。
- 部署生产 secrets:`openssl rand -base64 32 | npx wrangler secret put BETTER_AUTH_SECRET`;`echo "https://PROJECT_NAME.SUBDOMAIN.workers.dev" | npx wrangler secret put BETTER_AUTH_URL`;`echo "http://localhost:5173,https://PROJECT_NAME.SUBDOMAIN.workers.dev" | npx wrangler secret put TRUSTED_ORIGINS`。
- 如果使用 Google OAuth,设置生产 secrets:`echo "your-client-id" | npx wrangler secret put GOOGLE_CLIENT_ID`;`echo "your-client-secret" | npx wrangler secret put GOOGLE_CLIENT_SECRET`。
- 迁移远程数据库:`pnpm run db:migrate:remote`。
- 构建并部署:`pnpm run build && pnpm run deploy`。
- 首次部署后,更新 `BETTER_AUTH_URL` 为实际 Worker URL,并把生产 URL 加入 Google OAuth redirect URIs。
- 安全指纹去品牌化:修改页面标题(`index.html`)从 "Vite Flare Starter";UI 应用名(`VITE_APP_NAME`);localStorage keys(`VITE_APP_ID`)从 `vite-flare-starter-theme`;API tokens(`VITE_TOKEN_PREFIX`)从 `vfs_` 前缀;GitHub 链接(`VITE_GITHUB_URL`,设为空可隐藏);Worker 名(`wrangler.jsonc`)从 `vite-flare-starter`;数据库名(`wrangler.jsonc`)从 `vite-flare-starter-db`;R2 buckets(`wrangler.jsonc`)从 `vite-flare-starter-*`。
- 品牌环境变量:`VITE_APP_NAME`(UI 显示名)、`VITE_APP_ID`(localStorage 前缀、Sentry)、`VITE_TOKEN_PREFIX`(API token 前缀)、`VITE_GITHUB_URL`(GitHub 链接,空则隐藏)、`VITE_FOOTER_TEXT`(页脚版权)、`APP_NAME`(服务端应用名)。
- Auth 环境变量:`BETTER_AUTH_SECRET`(会话加密,`openssl rand -hex 32`)、`BETTER_AUTH_URL`(必须与实际 URL 完全一致)、`TRUSTED_ORIGINS`(逗号分隔,包含 localhost 和生产)、`GOOGLE_CLIENT_ID`、`GOOGLE_CLIENT_SECRET`、`ENABLE_EMAIL_LOGIN`(设为 "true" 启用)、`ENABLE_EMAIL_SIGNUP`(需要先启用 ENABLE_EMAIL_LOGIN)。
- Email 可选环境变量:`EMAIL_FROM`(发件地址,用于验证/密码重置)、`EMAIL_API_KEY`(邮件服务 API key,推荐 Resend)。
- 添加新数据库表:在 `src/server/db/schema.ts` 添加 schema;运行 `pnpm db:generate`;运行 `pnpm db:migrate:local`;运行 `pnpm db:migrate:remote`。
- 添加新 API 路由:在 `src/server/routes/` 创建 route 文件;在 `src/server/index.ts` 注册;在 `src/client/hooks/` 添加 TanStack Query hook。
- 更改 Auth Providers:编辑 `src/server/auth.ts`,把 provider 加入 `socialProviders`,把 credentials 加入 `.dev.vars` 和生产 secrets,更新客户端登录按钮。
- Feature Flags:通过环境变量控制功能,例如 `VITE_FEATURE_STYLE_GUIDE=true`、`VITE_FEATURE_COMPONENTS=true`;在 `src/client/lib/features.ts` 添加自己的 flag。
- 故障修复:Auth 静默重定向到主页 -> 缺少 `TRUSTED_ORIGINS` -> 设置包含所有有效 URL 的 `TRUSTED_ORIGINS`。
- 故障修复:部署时 "Not authorized" -> `account_id` 错误 -> 从 `wrangler.jsonc` 移除 `account_id` 或设置自己的。
- 故障修复:数据库 500 错误 -> 缺少迁移 -> 运行 `pnpm db:migrate:local` 和 `pnpm db:migrate:remote`。
- 故障修复:localStorage 显示 "vite-flare-starter" -> 缺少 `VITE_APP_ID` -> 在 `.dev.vars` 设置 `VITE_APP_ID=yourapp`。
- 故障修复:仅生产 Auth 失败 -> `BETTER_AUTH_URL` 不匹配 -> 必须完全匹配实际 Worker URL(https,无尾斜杠)。
- 故障修复:Google 登录 "redirect_uri_mismatch" -> OAuth redirect URI 缺失 -> 把生产 URL 加入 Google Cloud Console OAuth redirect URIs。
- 故障修复:Secret 更改无效 -> 未重新部署 -> `wrangler secret put` 不会重新部署,之后运行 `pnpm deploy`。
- 生产部署检查清单:`BETTER_AUTH_SECRET` 已设置(与 dev 不同!);`BETTER_AUTH_URL` 匹配实际 Worker URL;`TRUSTED_ORIGINS` 包含所有有效 URL;Google OAuth redirect URI 包含生产 URL;远程数据库已迁移(`pnpm db:migrate:remote`);配置文件中没有 `vite-flare-starter` 引用;favicon 已替换;`CLAUDE.md` 已更新;`.dev.vars` 未提交(检查 `.gitignore`)。
适用边界 · 注意事项
- 不适用于不想使用 Cloudflare Workers、D1、R2、Workers AI 或不想依赖 vite-flare-starter 模板的项目。
- 不适用于无法创建/登录 Cloudflare 账户、无法使用 wrangler 和 pnpm 的环境。
- 不适用于需要非 Cloudflare 后端或非 React 技术栈的项目。