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
      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
languagexml
gf build main.go --debug


Tip

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

命令总览

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

Code Block
languagexml
$ gf
USAGE
   gf COMMAND [OPTION]

COMMAND
   env 
$ 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
       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]
current binary
   -d, --debug      show internal detailed debugging information
   -h, --help       more nameinformation about    = "gf"
        arch     = "all"
        system   = "all"
        mod      = "none"
        cgo      = 0
        mod      = "none"
        version  = "v1.0.0"
        output   = "./bin"
        extra    = ""

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

编译时的内置变量可以在运行时通过gbuildgbuild (构建信息获取) 获取。

gen 代码生成

使用方式:gf gen TYPE [OPTION]

dao代码生成

model代码生成

gen命令用以自动化从数据库直接生成dao, model模型文件。

模型生成采用了Active Record设计模式。该命令将会根据数据表名生成对应的目录,该目录名称即数据表包名。目录下自动生成3个文件:

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

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

配置文件支持

Code Block
languagetoml
[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.daoDao&Model代码生成配置项,可以有多个支持多个数据库生成。link分为两部分,第一部分表示你连接的数据库类型mysql, postgresql等, 第二部分就是连接数据库的dsn信息。具体请参考 ORM使用配置 章节。
mysql:root:12345678@tcp(127.0.0.1:3306)/user
this command

ADDITIONAL
    Use "gf COMMAND -h" for details about a command.  

相关文档

Children Display
alltrue
excerptTypesimple

mod用于生成go文件的import计算,默认情况下会自动读取当前项目根目录下的go.mod获取。github.com/gogf/gf-demosgroupdefault在数据库配置中的数据库分组名称。

default

order

user

prefix生成数据库对象及文件的前缀,以便区分不同数据库或者不同数据库中的相同表名,防止数据表同名覆盖。

order_

user_

tables指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。user, userDetailpath./internal生成daomodel文件的存储目录地址./appremove-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。非必需参数OPTIONSdocker 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
titleContent Menu

Table of Contents