ginGen:快速搭建Gin项目的脚手架工具

1,826 阅读3分钟

一、为什么需要脚手架?

  • 创建项目需要做很多重复工作,比如:初始化go module、安装Gin框架、创建路由模板、配置数据库等;
  • 尽管有AI工具,比如cursor,trae,cline等,但是还是需要大量提示词和等待时间,比较麻烦;
  • 很多著名的框架都具有脚手架工具来减轻开发工作,比如: vue-cli、react-cli等。

这时候要是有个项目生成器,能像这样:

# 一句话创建标准项目
ginGen new my-shop --module github.com/myteam/my-shop

# 再一句话加数据库支持
cd my-shop && ginGen add mysql

岂不爽歪歪?

二、手把手体验ginGen

先上效果图!

5月10日.gif

这是生成的项目结构:

my-shop/
├── cmd/
│   └── server/
│       └── main.go      # 启动入口
├── configs/
│   └── config.yaml      # 统一配置
├── internal/
│   ├── config/          # 配置加载
│   ├── router/          # 路由管理
│   └── repository/      # 数据层
└── go.mod

安装只要几秒钟

# 安装工具
go install https://github.com/leixiaotian1/ginGen@latest

# 检查是否成功
ginGen version

3步创建完整项目

  1. 生成骨架
ginGen new my-shop --module github.com/myteam/my-shop

控制台刷刷刷输出:

✅ 创建目录结构
✅ 初始化go module
✅ 安装Gin框架
✅ 生成路由模板
项目创建成功!马上开始:
cd my-shop && go run cmd/server/main.go

2. 启动试试看

cd my-shop
go run cmd/server/main.go

打开浏览器访问 http://localhost:8080/ping,已经能看到Gin的经典响应:

{"message": "pong"}
  1. 添加MySQL支持
ginGen add mysql

工具自动完成:

✅ 安装GORM和MySQL驱动
✅ 生成数据库配置
✅ 创建连接示例
记得修改config.yaml配置哦!

查看自动生成的configs/config.yaml,发现多了数据库配置项:

mysql:
  dsn: "user:pass@tcp(localhost:3306)/dbname?charset=utf8mb4..."

三、实现原理

这个工具怎么实现的?核心就这几招:

1. 命令行(Cobra库)

// 创建命令
var newCmd = &cobra.Command{
    Use:   "new <项目名>",
    Short: "创建新项目",
    Run: func(cmd *cobra.Command, args []string) {
        // 在这里搞事情
    }
}

Cobra库让命令行开发变得超简单,支持:

  • 自动生成帮助文档
  • 参数校验
  • 子命令嵌套

2. 模板引擎

项目文件其实都是模板生成的,比如main.go模板:

// templates/new/main.go.tmpl
package main

import (
    "{{.ModulePath}}/internal/router"
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    router.SetupRoutes(r) // 自动生成的路由
    r.Run(":8080") 
}

渲染时替换{{.ModulePath}}为实际包名,就像填空题一样!

3. 自动化操作

工具帮你执行各种命令:

// 自动运行go mod init
exec.Command("go", "mod", "init", modulePath).Run()

// 安装Gin
exec.Command("go", "get", "github.com/gin-gonic/gin").Run()

四、为什么说这玩意好用?

对比手动创建,优势太明显了:

手动创建使用ginGen
创建时间10分钟+10秒
项目结构容易出错标准统一
依赖管理容易遗漏自动安装

五、未来还能更强大?

目前的mvp版本只是个开始,后续计划:

  • 组件市场:Redis、Kafka、ELK日志一键集成
  • 自定义模板:根据公司规范定制模板
  • 智能配置:自动检测环境生成配置
  • 插件系统:第三方可以开发扩展

如果你对完整代码感兴趣,我已经开源在GitHub 的仓库ginGen。欢迎Star⭐和PR,一起打造Go开发者的神兵利器!