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版本为例进行简单的介绍,详细的介绍信息请查看命令行帮助信息。本章内容信息可能会有滞后,最新的具体详细介绍请查看工具帮助信息。

工具职责

  1. 简化工程开发,提高开发效率
  2. 支持框架工程设计规范准确落地

注意事项

  1. 部分命令需要您先安装好Golang基础的开发环境,环境安装具体请参考 环境安装 章节。
  2. 最新的CLI工具版本会随着最新的框架版本走。

配置支持

工具的所有命令均同时支持命令行及配置文件配置参数,以提高易用性。当给定命令行参数时优先读取命令行参数,如果命令行参数不存在时,自动读取配置文件中对应的参数名称。

配置文件路径优先查找当前目录下的hack目录(hack/config.yaml),其次按照框架默认的配置路径检索配置文件。框架默认的配置文件检索路径请参考章节:配置管理-文件配置

配置文件的格式示例:

Code Block
languageyml
# GoFrame CLI tool configuration.
gfcli:
  gen:
    dao:
    - link:            "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
      tables:          "user"
      removePrefix:    "gf_"
      descriptionTag:  true
$ gf USAGE gf COMMAND [ARGUMENT] [OPTION] COMMAND env
      
show
noModelComment: 
current
 
Golang
true

 
environment
 
variables
docker:
    
get
build: "-a amd64 -s linux -p temp"
  
install
 
or
 
update
tagPrefixes:
 
GF
 
to
 
system
 
in
- 
default
ccr.ccs.tencentyun.com/xxx
    
gen
- hkccr.ccs.tencentyun.com/xxx
    - sgccr.ccs.tencentyun.com/xxx

注意以上配置示例仅供参考,具体配置项请参考具体命令帮助。

工具调试

当在工具的使用中遇到问题时,可以尝试打开工具的调试模式获得更详细的工具执行日志信息,打开工具调试模式可以通过debug命令行选项开启,例如:

Code Block
languagexml
gf 
automatically generate go files for ORM models...
build main.go --debug


Tip

由于gf工具也是使用GoFrame框架开发,因此调试信息的开启也是同框架方式一致,更详细的介绍请参考框架介绍文档:调试模式

命令总览

当前帮助文档以gf cli v2.0.0版本为例进行简单的介绍,详细的介绍信息请查看命令行帮助信息。本章内容信息可能会有滞后,最新的具体详细介绍请查看工具帮助信息。

Code Block
languagexml
$ gf
USAGE
   gf COMMAND [OPTION]

COMMAND
   env 
mod
       show 
extra
current 
features
Golang 
for go modules...
environment variables
   
run        running go codes with hot-compiled-like feature
...

   gen 
init
       
initialize
automatically 
an
generate 
empty
go 
GF
files 
project at current working directory
for dao/dto/entity/pb/pbentity...
   init 
help
      create 
show
and 
more
initialize 
information
an 
about
empty 
a
GoFrame 
specified command
project
   
pack       packing any file/directory to a resource file, or a go file
...

   
build      cross-building go project for lots of platforms
...

   
docker     
create
build 
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)
GoFrame project
   
install    install gf binary to system (might need root/admin permission)
   
version    show version information of current binary
version info


OPTION
   
-y, --yes        all yes for all command without prompt ask
   
-
?,-h show this help or detail for specified command -v,-i
v, --version    
show version information
ADDITIONAL
 of 
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):

Code Block
languagetoml
[gfcli]
    [gfcli.build]
        name     = "gf"
        arch     = "all"
        system   = "all"
        mod      = "none"
        cgo      = 0
        # mod     = "none"
        # version = "v1.0.0"
        # output  = "./bin"
        # extra   = ""

配置选项的释义同命令行同名选项。

编译时的内置变量可以在运行时通过gbuild包获取。

gen 代码生成命令

使用方式:gf gen model [PATH] [OPTION]

gen命令用以自动化从数据库直接生成模型文件。可以参考gf-demos示例项目中的模型文件即是通过该命令生成的:https://github.com/gogf/gf-demos/tree/master/app/model

模型生成采用了Active Record设计模式。该命令将会根据数据表名生成对应的目录,该目录名称即数据表包名。目录下自动生成3个文件: 1. 数据表名.go 自定义文件,开发者可以自由定义填充的代码文件,仅会生成一次,每一次模型生成不会覆盖。 1. 数据表名_entity.go 表结构文件,根据数据表结构生成的结构体定义文件,包含字段注释。数据表在外部变更后,可使用gen命令重复生成更新该文件。 1. 数据表名_model.go 表模型文件,为数据表提供了许多便捷的CURD操作方法,并可直接查询返回该表的结构体对象。数据表在外部变更后,可使用gen命令重复生成更新该文件。

数据表模型生成支持的数据库类型为:MySQL/MariaDBPostgreSQLSQLiteSQLServer。目前暂不支持Oracle,若有需求请联系作者。

run 热编译(自动编译)

使用方式:gf run FILE

由于Go是不支持热编译特性的,每一次代码变更后都要重新手动停止、编译、运行代码文件。run命令也不是实现热编译功能,而是提供了自动编译功能,当开发者修改了项目中的go文件时,该命令将会自动编译当前程序,并停止原有程序,运行新版的程序。

run命令会递归监控当前运行目录的所有go文件变化来实现自动编译。

get 依赖包下载

使用方式:gf get PACKAGE

gf get命令和go get命令类似,内部自动提供了代理设置功能,并智能识别并设置最快的下载代理地址。

docker 镜像编译

使用方式:gf docker [FILE] [OPTIONS]

自动编译并生成docker镜像。非必需FILE参数为编译文件路径,默认为main.go。非必需参数OPTIONSdocker build命令相同参数及选项。

update 工具更新

使用方式:gf update

该命令用以检测gf命令行工具的版本,并自动执行版本更新。

部分系统需要管理员权限支持。如果更新失败,请手动重新下载更新。

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

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
alltrue
excerptTypesimple
任何不懂的,就用help看看吧。










Panel
titleContent Menu

Table of Contents