- Created by 郭强, last modified on Dec 24, 2020
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 11 Next »
从GF v1.9
版本开始提供了gf
命令行开发辅助工具,将会随着框架发展不断完善,作为未来框架发展的一个重要组成部分,工具开源项目地址:https://github.com/gogf/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
版本为例进行简单的介绍,详细的介绍信息请查看命令行帮助信息。本章内容信息可能会有滞后,最新的具体详细介绍请查看工具帮助信息。
$ gf
USAGE
gf COMMAND [ARGUMENT] [OPTION]
COMMAND
env show current Golang environment variables
get install or update GF to system in default...
gen automatically generate go files for ORM models...
mod extra features for go modules...
run running go codes with hot-compiled-like feature...
init initialize an empty GF project at current working directory...
help show more information about a specified command
pack packing any file/directory to a resource file, or a go file...
build cross-building go project for lots of platforms...
docker create a docker image for current GF project...
swagger swagger feature for current project...
update update current gf binary to latest one (might need root/admin permission)
install install gf binary to system (might need root/admin permission)
version show current binary version info
OPTION
-y all yes for all command without prompt ask
-?,-h show this help or detail for specified command
-v,-i show version information
ADDITIONAL
Use 'gf help COMMAND' or 'gf COMMAND -h' for detail about a command, which has '...'
in the tail of their comments.
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
):
[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
,若有需求请联系作者。
配置文件支持
[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&Model代码生成配置项,可以有多个支持多个数据库生成。 | ||
link | 是 | 分为两部分,第一部分表示你连接的数据库类型mysql , postgresql 等, 第二部分就是连接数据库的dsn 信息。具体请参考 ORM使用配置 章节。 |
| |
mod | 否 | 用于生成go 文件的import 计算,默认情况下会自动读取当前项目根目录下的go.mod 获取。 | github.com/gogf/gf-demos | |
group | 否 | default | 在数据库配置中的数据库分组名称。 |
|
prefix | 否 | 生成数据库对象及文件的前缀,以便区分不同数据库或者不同数据库中的相同表名,防止数据表同名覆盖。 |
| |
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
看看吧。
- No labels