Skip to content

soryetong/gooze-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gooze-cli

基于 gooze-starter 快速构建 Go 服务并提供 Go 开发的 CLI 工具

🧠 旨在让 Go 服务的构建「更快、更清晰、更优雅」

可以先去 gooze-starter 文档中心 查看文档说明

要求

  • Go 1.24 或更高版本

使用

注意 注意 ⚠️

由于目前没有发布 release 版本以及并未发布 tag ,务必使用以下命令安装

待稳定后将会发布 release 版本

go install github.com/soryetong/gooze-cli@main

# @main 是重点,@latest 可能不是期望的最新提交

然后,进入你想存放的项目的目录中

命令 1:初始化一个 go 项目

gooze-cli init

如果 go install 成功,却提示找不到 gooze-cli 命令,那么需要先添加环境变量

运行该命令后,会提示你输入项目名、项目类型等,按照提示输入即可

gooze-cli

运行完成后,会按照 Go 社区的项目最佳实践来生成一个优雅的 Go 项目结构,并生成相应的代码文件。

命令 2:实现中......


命令 1 注意事项 ⚠️

项目名称有以下要求:

  • 不能包含汉字

  • 不能包含非法字符(如 emoji、特殊符号等)

  • 前后有空格不影响,代码会自动去掉,但是中间是不允许包含空格的

  • 仅允许这些字符:

    • 英文字母(A-Z / a-z)

    • 数字(0-9)

    • 中横线 - 和 下划线 _

关于是否需要多个子目录的解释

当我们在一个项目中同时提供多个独立的 API 服务(管理后台、C端APP、C端Web等),每个端都有自己完整的 API 接口

那么实现方式肯定是 创建多个子目录

当这个选择为 true 时,目录结构如下

my-project/
├── api/                      # API 描述文件目录
│   ├── admin/                # 管理后台端 API 描述
│   │   └── user.api
│   └── client/               # 客户端 API 描述
│       └── user.api
│
├── build/                    # 构建相关脚本(如 Dockerfile、CI 脚本)
│   ├── scripts/              # 启动/部署等辅助脚本(如 build.sh)
│   │   └── gen.sh            # 通用代码生成脚本
│   │   └── gen_*.sh          # 代码生成脚本 *代表对应端 
│   │   └── start_*.sh        # 项目启动脚本 *代表对应端 
│   └── docker/               # Dockerfile 或 compose 文件
│
├── cmd/                      # 每个服务的启动入口
│   ├── admin/                # 管理后台服务入口
│   │   └── main.go
│   └── client/               # 客户端服务入口
│       └── main.go
│
├── configs/                  # 应用级配置(YAML 格式)
│   ├── admin.yaml            # admin 端配置文件
│   └── client.yaml           # client 端配置文件
│
├── docs/                     # 文档入口
│   ├── swagger/              # Swagger 文档
│   │   ├── admin/            # admin 接口文档
│   │   │  └── user.yaml
│   │   └── client/           # client 接口文档
│   │      └── user.yaml
│
├── internal/                 # 核心业务代码(按端划分)
│   ├── admin/                # 管理后台模块
│   │   ├── handler/          # 控制器层(接收请求,返回响应)
│   │   ├── dto/              # 请求/响应的数据结构
│   │   ├── router/           # 路由定义
│   │   ├── service/          # 业务逻辑
│   │   └── bootstrap/        # 启动逻辑
│   └── client/               # 客户端模块(结构同 admin)
│
├── models/                   # 通用数据库模型
│
├── static/                   # 静态资源
│   ├── storage/              # 存放临时文件、用户上传文件、缓存等
│   
├── test/                     # 测试文件(单测、集成测试等)
│
├── .env.admin                # 管理后台的环境变量文件
├── .env.client               # 客户端的环境变量文件
├── .gitignore                # Git 忽略文件
├── go.mod                    # Go 模块定义
├── go.sum                    # Go 依赖校验文件
└── README.md                 # 项目说明文档

当这个选择为 false 时,目录结构如下

my-project/
├── api/                      # API 描述文件(如 user.api)
│   └── user.api
│
├── build/                    # 构建相关脚本(如 Dockerfile、CI 脚本)
│   ├── scripts/              # 启动/部署等辅助脚本(如 build.sh)
│   │   └── gen_server.sh     # 代码生成脚本
│   │   └── start_server.sh   # 项目启动脚本
│   └── docker/               # Dockerfile 或 compose 文件
│
├── cmd/                      # 程序入口
│   ├── server/               # 服务入口
│   │   └── main.go
│
├── configs/                  # 应用配置文件
│   └── config.yaml           # 主配置文件(可配合 .env 使用)
│
├── docs/                     # 文档入口
│   ├── swagger/              # Swagger 接口文档
│   │   └── user.yaml
│
├── internal/                 # 核心业务代码(推荐不导出,仅项目内部可用)
│   ├── handler/              # 控制器层(接收请求,返回响应)
│   ├── dto/                  # 请求/响应的数据结构
│   ├── router/               # 路由定义
│   ├── service/              # 业务逻辑
│   └── bootstrap/            # 启动逻辑
│
├── models/                   # 通用数据库模型
│
├── static/                   # 静态资源
│   ├── storage/              # 存放临时文件、用户上传文件、缓存等
│   
├── test/                     # 单元测试 / 集成测试代码
│
├── .env                      # 环境变量文件(用于区分本地/测试/生产)
├── .gitignore                # Git 忽略文件
├── go.mod                    # Go 模块定义
├── go.sum                    # Go 依赖校验文件
└── README.md                 # 项目说明文档

可以看到,创建多个子目录,主要是为了分层管理

目录结构没有什么大的差异,只是 apicmdinternal 多了一个层级

如果你认为 gooze-cli 生成的目录结构你不满意,那你完全可以使用 gooze-starter 自行生成

更多信息,请查看 gooze-starter 介绍



About

基于 gooze-starter 快速构建 Go 服务,旨在让 Go 服务的构建「更快、更清晰、更优雅」。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors