121 lines
3.7 KiB
Markdown
121 lines
3.7 KiB
Markdown
# Gin 技术栈依赖清单(适配 Go 1.25.7)
|
||
|
||
**目标版本**:Go 1.25.7
|
||
**原则**:精简、高效、易上手、好用、安全;所有依赖均兼容 Go 1.25,无需更换或移除。
|
||
|
||
---
|
||
|
||
## 一、Go 版本说明
|
||
|
||
- Go 1.25 于 2025 年 8 月发布,遵守 Go 1 兼容性承诺,现有主流库均可使用。
|
||
- **Gin** 官方要求 Go 1.24+,1.25.7 满足要求。
|
||
- **golang.org/x/\***(crypto、time 等)随 Go 工具链维护,支持当前稳定版。
|
||
- 若某依赖未显式声明支持 1.25,只要其 `go.mod` 为 `go 1.21` 或更高,在 1.25 下均可正常编译使用。
|
||
|
||
---
|
||
|
||
## 二、依赖列表(均适配 Go 1.25.7)
|
||
|
||
### 1. 核心与数据库
|
||
|
||
| 依赖 | 版本建议 | 说明 |
|
||
|------|----------|------|
|
||
| `github.com/gin-gonic/gin` | 最新 v1.x | 要求 Go 1.24+,1.25.7 兼容。 |
|
||
| `gorm.io/gorm` | 最新 v1.31.x | 无对高版本 Go 的限制。 |
|
||
| `gorm.io/driver/mysql` | 最新 | 与 GORM 配套。 |
|
||
|
||
### 2. 安全
|
||
|
||
| 依赖 | 版本建议 | 说明 |
|
||
|------|----------|------|
|
||
| `github.com/unrolled/secure` | v1.17+ | 标准 net/http 中间件,兼容 Go 1.25。 |
|
||
| `golang.org/x/crypto` | 最新 | 使用 `bcrypt` 等,随 Go 生态更新。 |
|
||
| `golang.org/x/time` | 最新 | 使用 `rate` 限流,兼容 Go 1.25。 |
|
||
|
||
### 3. 配置
|
||
|
||
| 依赖 | 版本建议 | 说明 |
|
||
|------|----------|------|
|
||
| `github.com/joho/godotenv` | v1.5.x | 仅读 .env,无高版本 Go 要求。 |
|
||
| 或 `github.com/caarlos0/env/v11` | v11.x | 解析 env 到结构体,兼容当前 Go。 |
|
||
|
||
### 4. 跨域与鉴权
|
||
|
||
| 依赖 | 版本建议 | 说明 |
|
||
|------|----------|------|
|
||
| `github.com/gin-contrib/cors` | v1.6+(务必 ≥1.6,修复 CVE) | 与 Gin 1.24+ / Go 1.25 兼容。 |
|
||
| `github.com/golang-jwt/jwt/v5` | 最新 v5.x | 推荐 v5,与 Go 1.25 兼容。 |
|
||
|
||
### 5. 接口文档(可选)
|
||
|
||
| 依赖 | 版本建议 | 说明 |
|
||
|------|----------|------|
|
||
| `github.com/swaggo/swag/cmd/swag` | 最新(CLI 工具) | 代码生成,使用最新 CLI 即可。 |
|
||
| `github.com/swaggo/gin-swagger` | 最新 | 与 Gin 配套。 |
|
||
| `github.com/swaggo/files` | 最新 | Swagger UI 静态资源。 |
|
||
|
||
### 6. 开发工具(仅开发环境)
|
||
|
||
| 依赖 | 版本建议 | 说明 |
|
||
|------|----------|------|
|
||
| `github.com/cosmtrek/air` | 最新 | 热重载,与 Go 1.25 兼容。 |
|
||
|
||
---
|
||
|
||
## 三、无需更换或移除
|
||
|
||
- 上述依赖在 Go 1.25.7 下**均无需更换或移除**。
|
||
- 未列入的冗余依赖(如单独再引入 validator、Viper、zap 等)按此前「精简版」建议已不纳入,无需因 Go 1.25 再改。
|
||
|
||
---
|
||
|
||
## 四、推荐 go.mod 片段(Go 1.25)
|
||
|
||
在项目根目录执行:
|
||
|
||
```bash
|
||
go mod init soul-server
|
||
go mod edit -go=1.25
|
||
```
|
||
|
||
然后按需拉取依赖(示例):
|
||
|
||
```bash
|
||
go get github.com/gin-gonic/gin
|
||
go get gorm.io/gorm gorm.io/driver/mysql
|
||
go get github.com/unrolled/secure
|
||
go get golang.org/x/crypto golang.org/x/time
|
||
go get github.com/gin-contrib/cors
|
||
go get github.com/golang-jwt/jwt/v5
|
||
go get github.com/joho/godotenv
|
||
# 可选
|
||
go get github.com/swaggo/gin-swagger github.com/swaggo/files
|
||
# 开发
|
||
go install github.com/cosmtrek/air@latest
|
||
go install github.com/swaggo/swag/cmd/swag@latest
|
||
```
|
||
|
||
---
|
||
|
||
## 五、验证方式
|
||
|
||
在 soul-server 目录下执行:
|
||
|
||
```bash
|
||
go mod tidy
|
||
go build ./...
|
||
```
|
||
|
||
若通过,则当前依赖与 Go 1.25.7 兼容。若某库报错,优先升级该库至最新 minor/patch 再试。
|
||
|
||
---
|
||
|
||
## 六、小结
|
||
|
||
| 项目 | 结论 |
|
||
|------|------|
|
||
| Go 1.25.7 | 支持,所有推荐依赖均适用。 |
|
||
| 需要更换的依赖 | 无。 |
|
||
| 需要移除的依赖 | 无(按本清单与精简原则已不包含不必要项)。 |
|
||
| 建议 | 使用 `go 1.25`,定期 `go get -u ./...` 与 `go mod tidy` 保持依赖健康。 |
|