https://github.com/limitcool/starter
starter 是一个 Go + gin 框架的项目脚手架,提供开箱即用的工具、库和 gin 项目配置,帮助您快速启动 gin 驱动的 API 项目开发。
https://github.com/limitcool/starter
Last synced: about 2 months ago
JSON representation
starter 是一个 Go + gin 框架的项目脚手架,提供开箱即用的工具、库和 gin 项目配置,帮助您快速启动 gin 驱动的 API 项目开发。
- Host: GitHub
- URL: https://github.com/limitcool/starter
- Owner: limitcool
- License: gpl-3.0
- Created: 2023-06-07T06:54:17.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-16T02:48:24.000Z (5 months ago)
- Last Synced: 2024-12-16T03:22:56.467Z (5 months ago)
- Language: Go
- Homepage:
- Size: 161 KB
- Stars: 8
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Starter
[](https://pkg.go.dev/github.com/limitcool/starter)
[](https://goreportcard.com/report/github.com/limitcool/starter)## 特征
- 提供 gin 框架项目模版
- 集成 GORM 进行 ORM 映射和数据库操作
- 支持 PostgreSQL (使用 pgx 驱动)
- 集成 Viper 进行配置管理
- 提供常用 gin 中间件和工具
- 跨域中间件:处理 API 跨域请求,实现 CORS 支持
- jwt 解析中间件:从请求中解析并验证 JWT Token,用于 API 身份认证## 快速开始
```bash
go install github.com/go-eagle/eagle/cmd/eagle@latest
eagle new -r https://github.com/limitcool/starter -b main
```## 环境配置
通过环境变量 `APP_ENV` 来指定运行环境:
- `APP_ENV=dev` 或 `APP_ENV=development` - 开发环境(默认)
- `APP_ENV=test` 或 `APP_ENV=testing` - 测试环境
- `APP_ENV=prod` 或 `APP_ENV=production` - 生产环境示例:
```bash
# 开发环境运行
APP_ENV=dev go run main.go# 生产环境运行
APP_ENV=prod ./starter
```## 配置文件
配置文件位于 `configs` 目录:
- `config.yaml` - 默认配置
- `config-dev.yaml` - 开发环境配置
- `config-test.yaml` - 测试环境配置
- `config-prod.yaml` - 生产环境配置
- `config.example.yaml` - 示例配置(用于版本控制)首次使用时,请复制 `config.example.yaml` 并根据环境重命名:
```bash
# 开发环境
cp configs/config.example.yaml configs/config-dev.yaml# 生产环境
cp configs/config.example.yaml configs/config-prod.yaml
```配置文件加载顺序:
1. 加载 `config.yaml` 作为默认配置
2. 根据 `APP_ENV` 加载对应的环境配置文件,覆盖默认配置## 日志配置
项目使用 [charmbracelet/log](https://github.com/charmbracelet/log) 作为日志库,支持控制台彩色输出和文件输出。
### 配置示例
```yaml
Log:
Level: info # 日志级别: debug, info, warn, error
Output: [console, file] # 输出方式: console, file
FileConfig:
Path: ./logs/app.log # 日志文件路径
MaxSize: 100 # 每个日志文件的最大大小(MB)
MaxAge: 7 # 日志文件保留天数
MaxBackups: 10 # 保留的旧日志文件最大数量
Compress: true # 是否压缩旧日志文件
```### 日志级别
- `debug`: 调试信息,包含详细的开发调试信息
- `info`: 一般信息,默认级别
- `warn`: 警告信息,需要注意的信息
- `error`: 错误信息,影响程序正常运行的错误### 输出方式
- `Console`: 输出到控制台,支持彩色输出
- `File`: 输出到文件,支持按大小自动分割、自动清理和压缩可以同时配置多个输出方式,日志会同时输出到所有配置的目标。如果不配置 output,默认只输出到控制台。
### 文件输出配置
- `Path`: 日志文件路径
- `MaxSize`: 单个日志文件的最大大小(MB),超过后会自动分割
- `MaxAge`: 日志文件保留天数,超过后会自动删除
- `MaxBackups`: 保留的旧日志文件数量
- `Compress`: 是否压缩旧的日志文件