kratos-layout脚手架,可以生成项目,proto,biz,service,data。mono库的生成未完全依照beer-shop,直接生成到app/xx而不是app/xx/service。
go install github.com/yoogoc/kratos-scaffold@latest
脚手架的基本格式
kratos-scaffold [proto | service | biz | data] [model] [field_name:field_type:predicate1,predicate2]...
- field_type:
类型 | go实体类型 | go参数类型 | proto实体类型 | proto参数类型 | 数据库类型 |
---|---|---|---|---|---|
float64 | float64 | *float64 | double | optional double | numeric |
float32 | float32 | *float32 | float | optional float | numeric |
int32 | int32 | *int32 | int32 | optional int32 | int |
int64 | int64 | *int64 | int64 | optional int64 | bigint |
uint32 | uint32 | *uint32 | uint32 | optional uint32 | int |
uint64 | uint64 | *uint64 | uint64 | optional uint64 | bigint |
bool | bool | *bool | bool | optional bool | tinyint |
string | string | *string | string | optional string | varchar(255) |
text | string | *string | string | optional string | text |
time | time.Time | time.Time | string | optional string | timestamp |
date | time.Time | time.Time | string | optional string | timestamp |
- predicate:谓语最终用于sql query时需要的where条件,目前支持:
- eq 等于
- cont like
- gt 大于
- gte 大于等于
- lt 小于
- lte 小于等于
- in 数组
- 生成项目
- 生成mono主库
kratos-scaffold new --mono demo
- 生成单体库
kratos-scaffold new user
- 生成mono子服务库
kratos-scaffold new user
new 生成单体库与mono子服务库的区别是通过当前目录下是否存在
go.mod
文件来判断
- 生成proto文件
kratos-scaffold proto -o api/user/v1/user.proto user id:int64:eq,in name:string:contains age:int32:gte,lte
- 生成biz。可用flag:
-
-n --namespace 指定子服务,如果不指定则默认此库为单体库,直接生成到{{project_dir}}/internal/biz目录下
如果指定了子服务,则会生成到生成到{{project_dir}}/app/{{namespace}}/internal/biz目录下 (data,service同)
kratos-scaffold biz -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte
- 生成data
kratos-scaffold data -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte
- 生成service
kratos-scaffold service -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte
- 一键生成proto, biz, data, service
kratos-scaffold g -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte
- 灵活的生成proto客户端
- 丰富配置,可以使用配置文件来约定配置,更轻量的使用cli
- biz,service,data可以通过proto文件生成
- data: 支持生成proto client和gorm
- proto 生成可以指定proto风格: aa_bb, aaBb, AaBb
- i18n
- 一次生成biz, service, data
- 完善文档