UNPKG

@hono-filebased-route/core

Version:

A core utility for file-based routing in Hono applications.

184 lines (128 loc) 4.26 kB
# Hono File-Based Routing Core 一个基于 Hono 框架的文件路由系统,使用 Turborepo 管理的 monorepo 项目,支持类似 Next.js 的文件路由模式。 ## 特性 - 🚀 **文件路由系统**: 基于文件结构自动生成路由 -**Bun 运行时**: 快速的 JavaScript 运行时 - 🔥 **热重载**: 开发时自动重新加载 - 📁 **动态路由**: 支持动态参数和通配符路由 - 🎯 **类型安全**: 完整的 TypeScript 支持 - 🛠️ **自动生成**: 路由配置自动生成,无需手动维护 - 📦 **Monorepo**: 使用 Turborepo 管理多包项目 -**构建缓存**: 智能缓存和并行构建优化 ## 路由规则 ### 基本路由实例 | 文件路径 | 路由路径 | 说明 | | ---------------------------------- | ------------- | ------------ | | `src/routes/index.ts` | `/` | 根路由 | | `src/routes/about.ts` | `/about` | 静态路由 | | `src/routes/users/index.ts` | `/users` | 嵌套路由 | | `src/routes/users/[id].ts` | `/users/:id` | 动态参数路由 | | `src/routes/articles/[...slug].ts` | `/articles/*` | 通配符路由 | ## 安装 安装项目依赖: ```bash npm install # or yarn add # or pnpm add # or bun add ``` ## 使用方法 ### Turborepo 命令 本项目使用 Turborepo 进行 monorepo 管理,支持以下命令: ```bash # 构建所有包 bun run build # 启动所有开发服务 bun run dev # 运行所有测试 bun run test # 类型检查 bun run type-check # 清理构建产物 bun run clean ``` ### 开发模式 ```bash # 使用 Turborepo 启动开发服务器 bun run dev # 或者直接启动示例项目 cd examples/bun bun run dev ``` 这将启动开发服务器,支持热重载,访问 <http://localhost:3000> ### 生产模式 ```bash # 先构建所有包 bun run build # 启动示例应用 cd examples/bun bun run start ``` ### 手动生成路由 ```bash bun run generate-routes ``` ## 创建路由`src/routes` 目录下创建 TypeScript 文件,导出 HTTP 方法处理函数: ```typescript import { Context } from 'hono' // GET 请求处理 export function GET(c: Context) { return c.json({ message: 'Hello from GET' }) } // POST 请求处理 export function POST(c: Context) { return c.json({ message: 'Hello from POST' }) } ``` ### 动态路由 使用方括号创建动态路由: ```typescript import { Context } from 'hono' export function GET(c: Context) { const id = c.req.param('id') return c.json({ userId: id }) } ``` ### 通配符路由 使用 `[...slug]` 创建通配符路由: 该项目通过 `c.req.path` 填充 `slug` 参数,自动为 `GET/POST` 函数提供第二个参数。 ```typescript import { Context } from 'hono' export function GET(c: Context, slug: string[]) { return c.json({ slug }) } ``` ## 工作原理 1. **路由扫描**: `scripts/generate-routes.ts` 扫描 `src/routes` 目录 2. **路径转换**: 将文件路径转换为 Hono 路由路径 3. **代码生成**: 生成 `src/generated-routes.ts` 文件 4. **自动注册**: 主应用自动注册所有生成的路由 ## 开发脚本 ### 根目录脚本(Turborepo) - `bun run build`: 构建所有包(支持缓存和并行构建) - `bun run dev`: 启动所有开发服务 - `bun run test`: 运行所有测试 - `bun run lint`: 代码检查 - `bun run type-check`: TypeScript 类型检查 - `bun run clean`: 清理所有构建产物 - `bun run test:basic`: 快速启动基础示例 ### 包级别脚本 - `bun run build`: 构建当前包 - `bun run dev`: 开发模式(包含热重载) - `bun run clean`: 清理构建产物 - `bun run generate-routes`: 生成路由配置(仅示例项目) ## 技术栈 - **[Hono](https://hono.dev/)**: 轻量级 Web 框架 - **[bun](https://bun.sh/)**: 快速的 JavaScript 运行时 - **[Turborepo](https://turbo.build/)**: 高性能 monorepo 构建系统 - **TypeScript**: 类型安全的 JavaScript ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! --- **注意**: `src/generated-routes.ts` 文件是自动生成的,请不要手动编辑。如需修改路由,请直接修改 `src/routes` 目录下的文件。