一个基于 pnpm workspace 的 React 全栈脚手架,前端使用 Vite,服务端使用 Next.js API(BFF),并提供完整的技术点示例。
- 前端:React + TypeScript + Vite
- 路由:React Router
- 状态:Zustand(本地状态) + TanStack Query(服务端状态)
- Hooks:ahooks
- UI:Tailwind CSS + shadcn/ui
- 服务端:Next.js(仅 API)
- 代码规范:Biome
- 包管理:pnpm
.
├─ apps/
│ ├─ server/ # Next.js API 服务(3000)
│ └─ web/ # Vite 前端应用(5173)
├─ packages/
│ └─ shared/ # 前后端共享类型
├─ biome.json
├─ package.json
├─ pnpm-workspace.yaml
└─ tsconfig.base.json
pnpm install
pnpm dev启动后:
- 前端:
http://localhost:5173 - 服务端:
http://localhost:3000 - API 示例:
GET /api/healthGET /api/todos
前端支持通过 VITE_API_BASE_URL 指向服务端地址:
cp apps/web/.env.example apps/web/.env默认值为 http://localhost:3000。
在仓库根目录执行:
pnpm dev:并行启动前后端pnpm build:构建所有包pnpm lint:运行 Biome 检查pnpm typecheck:运行 TypeScript 检查pnpm format:运行 Biome 自动格式化
- React Router:
apps/web/src/app/router.tsx - Zustand:
apps/web/src/store/counter-store.ts - TanStack Query:
apps/web/src/routes/ExamplesPage.tsx - ahooks:
apps/web/src/routes/ExamplesPage.tsx - Tailwind + shadcn/ui:
apps/web/src/index.css、apps/web/src/components/ui/button.tsx - Next.js API:
apps/server/app/api/*/route.ts - Shared Types:
packages/shared/src/api.ts
推荐使用 Conventional Commits:
feat(scope): ...fix(scope): ...chore(scope): ...docs(scope): ...