Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
GoFrame
框架提供了功能强大的gf
命令行开发辅助工具,是框架发展的一个重要组成部分,工具地址:
GF v1.9
版本开始提供了gf
命令行开发辅助工具,将会随着框架发展不断完善,作为未来框架发展的一个重要组成部分,工具开源项目地址:-cli我们推荐通过下载安装预编译的二进制使用。工具安装成功后,可以通过工具安装请参考仓库页面。工具安装成功后,可以通过gf
或者gf -h
查看所有支持的命令。复杂的命令可以通过gf help COMMAND
或者gf COMMAND -h
查看更详细的使用帮助信息,例如:gf help gen
、gf gen -h
。
工具运行初始化时将会自动打开
Go Modules
特性并设置反向代理地址为https://goproxy.cn
。当前帮助文档以
gf cli v0.7.5
版本为例进行简单的介绍,详细的介绍信息请查看命令行帮助信息。本章内容信息可能会有滞后,最新的具体详细介绍请查看工具帮助信息。
工具职责
- 简化工程开发,提高开发效率
- 支持框架工程设计规范准确落地
注意事项
- 部分命令需要您先安装好
Golang
基础的开发环境,环境安装具体请参考 环境安装 章节。 - 最新的
CLI
工具版本会随着最新的框架版本走。
配置支持
工具的所有命令均同时支持命令行及配置文件配置参数,以提高易用性。当给定命令行参数时优先读取命令行参数,如果命令行参数不存在时,自动读取配置文件中对应的参数名称。
配置文件路径优先查找当前目录下的hack
目录(hack/config.yaml
),其次按照框架默认的配置路径检索配置文件。框架默认的配置文件检索路径请参考章节:配置管理-文件配置
配置文件的格式示例:
Code Block | ||
---|---|---|
| ||
# GoFrame CLI tool configuration.
gfcli:
gen:
dao:
- link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
tables: "user"
removePrefix: "gf_"
descriptionTag: true
noModelComment: true
docker:
build: "-a amd64 -s linux -p temp"
tagPrefixes:
- ccr.ccs.tencentyun.com/xxx
- hkccr.ccs.tencentyun.com/xxx
- sgccr.ccs.tencentyun.com/xxx |
注意以上配置示例仅供参考,具体配置项请参考具体命令帮助。
工具调试
当在工具的使用中遇到问题时,可以尝试打开工具的调试模式获得更详细的工具执行日志信息,打开工具调试模式可以通过debug
命令行选项开启,例如:
Code Block | ||
---|---|---|
| ||
gf build main.go --debug |
Tip |
---|
由于 |
命令总览
当前帮助文档以gf cli v2.0.0
版本为例进行简单的介绍,详细的介绍信息请查看命令行帮助信息。本章内容信息可能会有滞后,最新的具体详细介绍请查看工具帮助信息。
Code Block | ||
---|---|---|
| ||
$ gf
USAGE
gf COMMAND [OPTION]
COMMAND
env |
show |
current |
Golang |
environment variables |
run running go codes with hot-compiled-like feature |
gen |
|
automatically |
generate |
go |
files |
for dao/dto/entity/pb/pbentity... init |
create |
and |
initialize |
an |
empty |
GoFrame |
project |
pack packing any file/directory to a resource file, or a go file |
|
build cross-building go project for lots of platforms |
|
docker |
build |
docker image for current |
GoFrame project |
install install gf binary to system (might need root/admin permission)
|
version show version information of current binary |
OPTION
|
-y, --yes all yes for all command without prompt ask |
- |
v, --version |
show version information |
of |
install
工具安装
使用方式:./gf install
该命令往往是在gf
命令行工具下载到本地后执行(注意执行权限),用于将gf
命令安装到系统环境变量默认支持的目录路径中,以便于在系统任何的地方直接可以使用gf
工具。
部分系统需要管理员权限支持。
如果是
MacOS
下使用zsh
的小伙伴可能会遇到别名冲突问题,可以通过alias gf=gf
来解决,运行一次之后gf
工具会自动修改profile
中的别名设置,用户重新登录就好了。
version
工具版本查看
使用方式:
gf -v
gf version
用以查看当前gf
命令行工具编译时的版本信息。例如:
$ gf -v
GoFrame CLI Tool v0.7.5, https://goframe.org
Built Detail:
Go Version: go1.13.5
GF Version: v1.13.0
Git Commit: 0ab2a4a9e753f4f5fae1e96ecf40cae94895d494
Built Time: 2020-06-05 23:30:39
init
项目创建
使用方式:gf init NAME
我们可以使用init
命令在当前目录生成一个示例的GF
空框架项目,并可给定项目名称参数。生成的项目目录结构仅供参考,根据业务项目具体情况可自行调整。生成的目录结构请参考 新建项目 章节。
GF
框架开发推荐统一使用官方的go module
特性进行依赖包管理,因此空项目根目录下也有一个go.mod
文件。
build
交叉编译
使用方式:gf build FILE [OPTION]
仅限于交叉编译使用到GF
框架的项目,支持绝大部分常见系统的直接交叉编译。并且支持配置文件管理编译选项、嵌入编译时变量。使用gf build
的项目将会默认嵌入以下变量(参考gf -v
):
- 当前
Go
版本。 - 当前
GF
版本。 - 当前编译时间。
- 当前
Git Commit
(如果存在)。
编译配置文件选项示例(默认读取config.toml
):
Code Block | ||
---|---|---|
| ||
[gfcli]
[gfcli.build]
name = "gf"
arch = "all"
system = "all"
mod = "none"
cgo = 0
mod = "none"
version = "v1.0.0"
output = "./bin"
extra = "" |
配置选项的释义同命令行同名选项。
编译时的内置变量可以在运行时通过
gbuild
包 gbuild (构建信息获取) 获取。
gen
代码生成
使用方式:gf gen TYPE [OPTION]
dao
代码生成
model
代码生成
gen
命令用以自动化从数据库直接生成dao
, model
模型文件。
模型生成采用了Active Record
设计模式。该命令将会根据数据表名生成对应的目录,该目录名称即数据表包名。目录下自动生成3个文件:
数据表名.go
自定义文件,开发者可以自由定义填充的代码文件,仅会生成一次,每一次模型生成不会覆盖。数据表名_entity.go
表结构文件,根据数据表结构生成的结构体定义文件,包含字段注释。数据表在外部变更后,可使用gen
命令重复生成更新该文件。数据表名_model.go
表模型文件,为数据表提供了许多便捷的CURD
操作方法,并可直接查询返回该表的结构体对象。数据表在外部变更后,可使用gen
命令重复生成更新该文件。
数据表模型生成支持的数据库类型为:
MySQL/MariaDB
、PostgreSQL
、SQLite
、SQLServer
。目前暂不支持Oracle
,若有需求请联系作者。
配置文件支持
Code Block | ||
---|---|---|
| ||
[gfcli]
[[gfcli.gen.dao]]
mod = "github.com/gogf/gf-demos"
link = "mysql:root:12345678@tcp(127.0.0.1:3306)/order"
group = "order"
prefix = "order_"
tables = ""
[[gfcli.gen.dao]]
mod = "github.com/gogf/gf-demos"
link = "mysql:root:12345678@tcp(127.0.0.1:3306)/user"
group = "user"
prefix = "user_"
tables = "user,userDetail,userScore" |
gfcli.gen.dao
dao
代码生成配置项,可以有多个支持多个数据库生成。link
mysql
, postgresql
等, 第二部分就是连接数据库的dsn
信息。具体请参考 ORM使用配置 章节。mysql:root:12345678@tcp(127.0.0.1:3306)/user
current binary
-d, --debug show internal detailed debugging information
-h, --help more information about this command
ADDITIONAL
Use "gf COMMAND -h" for details about a command. |
相关文档
Children Display | ||||
---|---|---|---|---|
|
mod
go
文件的import
计算,默认情况下会自动读取当前项目根目录下的go.mod
获取。github.com/gogf/gf-demos
group
default
default
order
user
prefix
order_
user_
tables
user, userDetail
path
./internal
dao
和model
文件的存储目录地址./app
remove-prefix
gf_
run
热编译(自动编译)
使用方式:gf run FILE
由于Go
是不支持热编译特性的,每一次代码变更后都要重新手动停止、编译、运行代码文件。run
命令也不是实现热编译功能,而是提供了自动编译功能,当开发者修改了项目中的go
文件时,该命令将会自动编译当前程序,并停止原有程序,运行新版的程序。
run
命令会递归监控当前运行目录的所有go
文件变化来实现自动编译。
swagger
API文档生成
使用方式:gf swagger
该命令内部使用的是swag
工具,相关语法请参考:https://github.com/swaggo/swag
此外,推荐使用gf
框架的swagger
插件,仓库地址:https://github.com/gogf/swagger
get
依赖包下载
使用方式:gf get PACKAGE
gf get
命令和go get
命令类似,内部自动提供了代理设置功能,并智能识别并设置最快的下载代理地址。
docker
镜像编译
使用方式:gf docker [FILE] [OPTIONS]
自动编译并生成docker
镜像。非必需FILE
参数为编译文件路径,默认为main.go
。非必需参数OPTIONS
为docker build
命令相同参数及选项。
update
工具更新
使用方式:gf update
该命令用以检测gf
命令行工具的版本,并自动执行版本更新,下载安装最新cli
版本。
部分系统需要管理员权限支持。如果更新失败,请手动重新下载更新。
pack
资源打包
使用方式:gf pack SRC DST
该命令用以将任意的文件打包为资源文件或者Go
代码文件,可将任意文件打包后随着可执行文件一同发布。此外,在build
命令中支持打包+编译一步进行,具体请查看build
命令帮助信息。关于资源管理的介绍请参考 资源管理 章节。
mod
包管理扩展功能
使用方式:gf mod path
该命令用于将当前go modules
包拷贝到GOPATH
中,以便使用原始的GOPATH
方式开发,往往为了方便调试本地开发的依赖包。
help
命令行帮助
使用方式:
gf -h
gf -?
gf help [COMMAND]
gf [COMMAND] -h
任何不懂的,就用help
看看吧。
Panel | ||
---|---|---|
| ||
|