YLAPP Local Bootstrap Skill
用于在新电脑上从零完成 ylapp 本地运行。执行目标:
- 完成依赖安装与代码生成
- 按需启动 gosvc / fe / demobase / svc
- 所有环境变量均在运行时询问用户输入,不写入代码或配置文件
Source of Truth
启动流程以仓库根目录 README.md 的"本地开发部署"章节为准。如果本 Skill 与 README 存在冲突,以 README 为准。
Safety Rules
- 禁止在任何输出中打印完整的敏感信息(数据库连接串、密钥等),必要时仅展示脱敏版本(如
postgres://user:***@host/db)。 - 禁止将环境变量写入任何文件(.env、.bashrc、脚本、README 等),也不得提交到仓库。
- 仅在当前终端会话通过
export(Bash)或$env:(PowerShell)设置环境变量。 - 不修改业务代码来绕过环境变量缺失。
- 不自动提交(git commit/push)任何变更。
Preconditions
在仓库根目录执行。先检查以下工具是否可用:
git --version
go version
node -v
pnpm -v
如果任一工具缺失,立即停止,汇总缺失项并告知用户需要先安装,给出安装建议后等待用户确认再继续。
环境准备参考
- Go: https://go.dev/dl/ — 建议 1.21+
- Node.js: https://nodejs.org/ — 建议 18+,推荐使用 nvm 管理
- pnpm:
npm install -g pnpm或corepack enable && corepack prepare pnpm@latest --activate
Bootstrap Workflow
Step 1: 拉取与初始化
代码已拉取到本地时,在仓库根目录依次执行:
git submodule init
git submodule update
pnpm install
pnpm buf generate
go mod tidy
go mod download
每步完成后确认无报错再继续。如果 pnpm buf generate 失败,检查是否需要安装 protoc-gen-go 等代码生成工具。
Step 2: 询问要启动的组件
询问用户希望启动哪些组件(支持多选):
| 组件 | 说明 |
|---|---|
| gosvc | Go 后端服务 |
| fe | 前端开发服务器 |
| demobase | Demo 数据库服务 |
| svc | Node.js 后端服务 |
Step 3: 收集环境变量
仅在所选组件需要时才询问对应变量:
| 组件 | 所需环境变量 | 说明 |
|---|---|---|
| gosvc | YL_CH_ADDR |
ClickHouse 地址 |
| svc | DEMOBASE_DATABASE_URL |
数据库连接串 |
| demobase | DEMOBASE_DATABASE_URL(可选) |
如需数据库功能时询问 |
交互规则:
- 不提供默认值,由用户手动输入
- 用户跳过时,明确提示该组件可能无法正常启动,并允许继续
- 如果多个组件共用同一变量(如 svc 和 demobase 都用
DEMOBASE_DATABASE_URL),只询问一次
Step 4: 启动组件
启动 gosvc
工作目录:仓库根目录
# Bash
export YL_CH_ADDR="<用户输入>"
go run ./gosvc server
# PowerShell
$env:YL_CH_ADDR="<用户输入>"; go run ./gosvc server
建议使用 run_in_terminal 的 mode=async。
启动 fe
工作目录:packages/fe
pnpm dev
建议 mode=async。
启动 demobase
工作目录:packages/demobase
pnpm db:gen
pnpm run build
pnpm dev
其中 pnpm dev 建议 mode=async,前两步需顺序执行完成后再启动。
启动 svc
工作目录:packages/svc
# Bash
export DEMOBASE_DATABASE_URL="<用户输入>"
pnpm db:gen
pnpm dev
# PowerShell
$env:DEMOBASE_DATABASE_URL="<用户输入>"; pnpm db:gen; pnpm dev
pnpm dev 建议 mode=async。
Step 5: 验证
启动后对每个组件执行检查:
- 读取异步终端输出,确认无立即崩溃
- 对失败的组件,报告:
- 失败命令
- 关键报错信息(前后数行上下文)
- 最可能原因(缺环境变量 / 端口占用 / 依赖未安装 / 数据库不可达)
Step 6: 输出结果
执行完成后给用户简要清单:
✅ 成功启动: gosvc, fe
❌ 启动失败: svc — 原因: DEMOBASE_DATABASE_URL 未设置
⏭️ 未启动: demobase — 用户跳过
下一步建议:
- svc: 请提供 DEMOBASE_DATABASE_URL 后重试
包含:
- 成功启动的组件及终端状态
- 失败组件及原因
- 未启动组件及原因
- 下一步建议