4caf502908f986807b1e2ed20b5fa3c2b99b0a27
- 引入 React Router v7 (Declarative mode) 实现 SPA 路由 - 重构 Layout 为 Header + 侧边栏 + 内容区的企业 Admin 布局 - 新增侧边栏菜单组件,支持折叠/展开,状态持久化到 localStorage - 新增示例页面:仪表盘、用户管理、系统设置、404 - 菜单配置与路由统一为单一数据源 (menu.tsx) - Vite code splitting 新增 vendor-router 组 - 更新 DEVELOPMENT.md 和 README.md 文档
my-app
(替换为你的项目介绍)
Bun 全栈应用模板,基于 Bun + React + TDesign 的前后端一体化开发框架。
快速开始
git clone <your-repo-url> my-project
cd my-project
bun install
bun run dev
访问 http://127.0.0.1:5173 查看应用。
使用此模板
1. 克隆模板
git clone <template-repo-url> my-project
cd my-project
rm -rf .git && git init
2. 配置应用信息
编辑 src/shared/app.ts,修改应用元信息:
export const APP = {
name: "your-app", // 机器标识(kebab-case)
title: "Your App", // 人类可读标题
subtitle: "你的副标题", // 副标题
description: "应用描述", // SEO meta 描述
version: "0.1.0", // 版本号
} as const;
同时修改 package.json 的 name 字段保持一致。
注意:localStorage key 已从
"my-app.theme.preference"变更为"theme.preference"。如果从旧版本升级,用户的主题偏好设置将丢失,需重新选择。
3. 清理 OpenSpec 历史
删除模板自带的 OpenSpec 变更历史,保留框架配置:
rm -rf openspec/specs/*
rm -rf openspec/changes/*
openspec/config.yaml需要保留,其中包含项目开发规范配置。
4. 安装依赖
bun install
5. 开始开发
bun run dev
项目管理
| 命令 | 说明 |
|---|---|
bun run dev |
启动开发模式(并行启动后端 + 前端 Vite 开发服务器) |
bun run dev:server |
仅启动后端开发服务(--watch 热重载) |
bun run dev:web |
仅启动前端 Vite 开发服务器 |
bun run build |
生产构建(Vite 打包前端 → Bun compile 生成独立可执行文件) |
bun test |
运行全部测试 |
bun run lint |
ESLint 代码风格检查 |
bun run format |
Prettier 代码格式化 |
bun run typecheck |
TypeScript 类型检查 |
bun run check |
完整质量检查:typecheck + lint + test |
bun run verify |
验证构建流程:check + build |
bun run clean |
清理构建产物和临时文件 |
项目结构
.
├── config.example.yaml # 配置文件示例
├── bunfig.toml # Bun 配置(测试预加载等)
├── tsconfig.json # TypeScript 配置
├── vite.config.ts # Vite 构建配置(代码分包、代理)
├── eslint.config.js # ESLint 统一配置
├── .prettierrc.json # Prettier 格式化配置
├── commitlint.config.js # Commitlint 提交规范配置
├── .lintstagedrc.json # lint-staged 暂存区检查配置
├── scripts/
│ ├── dev.ts # 开发启动脚本(并行启动 API + Vite)
│ ├── build.ts # 生产构建脚本(Vite → 代码生成 → Bun compile)
│ └── clean.ts # 清理脚本
├── src/
│ ├── server/ # 后端代码
│ │ ├── bootstrap.ts # 统一启动引导(配置加载 → 服务启动 → 优雅关闭)
│ │ ├── config.ts # CLI 参数解析 + YAML 配置加载
│ │ ├── dev.ts # 开发模式入口
│ │ ├── main.ts # 生产模式入口
│ │ ├── server.ts # HTTP 服务器(Bun.serve routes 声明式路由)
│ │ ├── helpers.ts # 共享响应工具(健康检查、JSON 响应)
│ │ ├── middleware.ts # API 参数校验中间件
│ │ ├── static.ts # 静态资源服务
│ │ └── routes/ # API 路由处理器
│ │ └── health.ts # 健康检查端点
│ ├── shared/
│ │ ├── api.ts # 前后端共享 TypeScript 类型定义
│ │ └── app.ts # 应用全局常量(name、title、version 等)
│ └── web/ # 前端代码
│ ├── index.html # HTML 入口
│ ├── main.tsx # React 入口(BrowserRouter + QueryClient + ErrorBoundary)
│ ├── app.tsx # 根组件(Admin 布局:Header + Sidebar + Content)
│ ├── routes.tsx # 路由配置
│ ├── styles.css # 全局样式
│ ├── css.d.ts # CSS 模块类型声明
│ ├── pages/ # 页面组件
│ │ ├── dashboard/ # 仪表盘页
│ │ ├── users/ # 用户管理页
│ │ ├── settings/ # 系统设置页
│ │ └── 404/ # 404 页面
│ ├── components/ # UI 组件
│ │ ├── ErrorBoundary.tsx
│ │ └── Sidebar/ # 侧边栏组件
│ ├── hooks/ # React Hooks
│ ├── utils/ # 前端工具函数
│ ├── menu.tsx # 菜单配置
│ └── routes.tsx # 路由配置
├── tests/ # 测试文件(镜像 src 目录结构)
├── openspec/ # OpenSpec 规格与变更管理
└── docs/ # 项目文档
配置
项目使用 YAML 配置文件,支持环境变量覆盖。
配置文件
复制 config.example.yaml 为 config.yaml(或任意名称),根据需要修改:
server:
host: "127.0.0.1"
port: 3000
环境变量覆盖
| 环境变量 | 对应配置字段 | 默认值 |
|---|---|---|
HOST |
server.host |
127.0.0.1 |
PORT |
server.port |
3000 |
配置优先级
环境变量 > YAML 配置文件 > 代码默认值
使用自定义配置
bun run dev custom-config.yaml
技术栈
运行时
| 技术 | 说明 |
|---|---|
| Bun | JavaScript/TypeScript 运行时、包管理器、打包器 |
| TypeScript | 类型安全的 JavaScript 超集 |
后端
| 技术 | 说明 |
|---|---|
Bun.serve |
HTTP 服务器,声明式路由匹配 |
Bun.YAML |
YAML 配置文件解析 |
| es-toolkit | 高性能工具库(推荐优先使用) |
前端
| 技术 | 说明 |
|---|---|
| React 19 | UI 组件框架 |
| React Router | SPA 路由与页面导航 |
| TDesign React | 企业级 UI 组件库 |
| @tanstack/react-query | 服务端状态管理与数据获取 |
| Recharts | 图表可视化(推荐使用) |
| Vite | 前端构建工具 |
工程化
| 技术 | 说明 |
|---|---|
| ESLint | 代码规范检查 |
| Prettier | 代码格式化 |
| Husky | Git hooks 管理 |
| Commitlint | Git 提交消息校验 |
测试
| 技术 | 说明 |
|---|---|
| bun:test | Bun 内置测试框架 |
| @testing-library/react | React 组件测试 |
| jsdom | DOM 环境模拟 |
开源协议
MIT
Description
Languages
TypeScript
95.7%
JavaScript
2.5%
CSS
1.6%
HTML
0.2%