介绍
# web-deploy
构建网站、Web 应用和 API 并将其部署到生产环境。
## 本地预览工作流
```bash # Static site npx http-server ./dist -p 8080 -c-1
# Next.js npm run dev # Development (hot reload) npm run build && npm run start # Production preview
# FastAPI uvicorn app.main:app --reload --port 8000
# Vite-based npm run dev # Dev server npm run build && npx serve dist # Production preview ```
## 部署目标
### Vercel (Frontend / Next.js / Static)
```bash # First time setup npx vercel link
# Preview deployment npx vercel
# Production deployment npx vercel --prod
# Environment variables npx vercel env add SECRET_KEY ```
**适用于:** Next.js 应用、React SPA、静态站点、无服务器函数。
**配置:** `vercel.json`(通常 Next.js 不需要) ```json { "buildCommand": "npm run build", "outputDirectory": "dist", "framework": "nextjs" } ```
### Railway (Backend / APIs / Databases)
```bash # First time setup railway login railway init
# Deploy railway up
# Add database railway add --plugin postgresql
# Environment variables railway variables set SECRET_KEY=value
# View logs railway logs ```
**适用于:** 后端 API、数据库、长时间运行的进程、Docker 容器。
### GitHub Pages (静态站点)
```bash # Using gh-pages package npm install -D gh-pages # Add to package.json scripts: "deploy": "gh-pages -d dist" npm run build && npm run deploy ```
**适用于:** 文档、简单的静态站点、项目页面。
### Canvas (Clawdbot 工作区)
部署到 `~/clawd/canvas/` 以通过 clawdbot 网关进行本地服务。 ```bash cp -r ./dist/* ~/clawd/canvas/my-project/ ```
## 部署前检查清单
- [ ] 本地构建成功 (`npm run build` / `python -m build`) - [ ] 无 TypeScript/lint 错误 - [ ] 测试通过 - [ ] 在目标平台上设置了环境变量 - [ ] `.env` / 密钥**未**提交到 git - [ ] 如果是公开站点,需配置 `robots.txt` 和 `sitemap.xml` - [ ] 设置了 Favicon 和 meta 标签 - [ ] 配置了 HTTPS(Vercel/Railway 上自动配置) - [ ] 配置了错误页面 (404, 500) - [ ] 性能:图片已优化、代码已拆分、无巨大打包文件
## 回滚
```bash # Vercel — redeploy previous npx vercel rollback
# Railway — redeploy previous railway rollback
# Git-based — revert and push git revert HEAD && git push ```
## 域名设置
```bash # Vercel npx vercel domains add mydomain.com
# DNS: Point CNAME to cname.vercel-dns.com # Or A record to 76.76.21.21 ```