跳转到内容

项目创建方式

goctl 根据你的起点提供多种创建项目的方式。

最快的全新服务启动方式:

Terminal window
# HTTP API 服务
goctl api new myservice
cd myservice && go mod tidy
# gRPC 服务
goctl rpc new myservice
cd myservice && go mod tidy

当你已有 .api.proto 文件(例如团队共享的):

Terminal window
# 从 .api 文件
mkdir myservice && cd myservice
go mod init myservice
goctl api go -api myservice.api -dir .
go mod tidy
# 从 .proto 文件
mkdir myservice && cd myservice
go mod init myservice
goctl rpc protoc myservice.proto \
--go_out=./pb \
--go-grpc_out=./pb \
--zrpc_out=.
go mod tidy

修改 .api.proto 文件后,重新生成而不覆盖业务逻辑:

Terminal window
# API:重新生成,保留 internal/logic/
goctl api go -api myservice.api -dir .
# RPC:重新生成,保留 internal/logic/
goctl rpc protoc myservice.proto \
--go_out=./pb \
--go-grpc_out=./pb \
--zrpc_out=.

goctl 永远不会写入 internal/logic/,其他所有文件(处理器、路由、类型、配置结构体)都会被重新生成。

对于需要统一规范(日志配置、错误码、CI 配置)的团队,goctl 支持自定义模板:

~/.goctl/
# 初始化默认模板目录
goctl template init
# 编辑模板,例如 logic 文件模板
vim ~/.goctl/api/logic.tpl
# 生成时自动使用模板
goctl api go -api myservice.api -dir .
Terminal window
# Dockerfile
goctl docker -go main.go
# Kubernetes 部署清单
goctl kube deploy \
-name myservice \
-namespace prod \
-image myregistry/myservice:v1.0.0 \
-o deployment.yaml
# 从 SQL DDL 生成数据库模型
goctl model mysql ddl \
-src schema.sql \
-dir internal/model
方式适用场景
goctl api new / rpc new全新服务,从零开始
goctl api go / rpc protoc已有 DSL 文件
重新生成修改 .api.proto
自定义模板统一团队级约定
goctl docker / kube生成部署文件