GoFrame框架提供了功能强大的gf命令行开发辅助工具,是框架发展的一个重要组成部分,工具地址:

工具安装请参考仓库页面。工具安装成功后,可以通过gf或者gf -h查看所有支持的命令。复杂的命令可以通过gf COMMAND -h查看更详细的使用帮助信息,例如:gf gen -h

工具职责

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

注意事项

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

配置支持

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

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

配置文件的格式示例:

# 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

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

工具调试

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

gf build main.go --gf.debug

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

命令总览

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

$ 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 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.  

相关文档









Content Menu

  • No labels

19 Comments

  1. USAGE
        gf COMMAND [ARGUMENT] [OPTION]

    COMMAND
        env        查看golang的环境变量
        get        依赖包下载
        gen        自动生成 ORM代码
        mod        go modules的相关命令[扩展功能]    
    run 以热编译(自动编译)的方式运行代码 init 创建项目并初始化 help 查看命令的更多提示信息 pack 打包文件或目录 到资源文件或一个go文件 build 交叉编译 docker 为当前项目创建docker镜像 swagger 使用swagger生成API文档 update 更新GF到最新版本 (可能需要管理员权限) install 安装GF (可能需要管理员权限)
      version 查看GF版本信息


    1. 这个怎么转换成中文的

      1. 我手动翻译的  哈哈😄

  2. gf  install 没有安装到PATH指定的路径中!

  3. 有没有人注意到这个gf,跟命令行里面git的flow模式重名了

    gf -h
    用法:git fetch [<选项>] [<仓库> [<引用规格>...]]
       或:git fetch [<选项>] <组>
       或:git fetch --multiple [<选项>] [(<仓库> | <组>)...]
       或:git fetch --all [<选项>]

        -v, --verbose         更加详细
        -q, --quiet           更加安静
        --all                 从所有的远程抓取

    ...

    1. 可能是因为你使用的shell插件(例如: oh-my-zsh) 给你创建了alias

  4. 强哥,以后会在工具中加入数据迁移和数据填充功能吗?

  5. pb文件的生成在windows下有BUG,*.proto是执行不了的,

    且pb没办法引用第三方库呀。


  6. 文章最前部分的这个地址是个 404 啊。

  7. 请教一下,升级gf-cli 的时候出现


    .zsh killed  是什么问题? 需要配置什么吗

     郭强 


    1. 补充;macos m1 

      1.  hi ,目前可以安装到最新的rc3 . 因为我是用mac m1 arm64  所以我下载的是对应的版本 后执行 install

        gf_darwain_arm64 结果是出出现我提到的. zsh killed 

        我下载gf_darwin_amd64 执行同样的操作可以了. 

        不知原因(我知道m1 上是可以支持amd64)为什么arm64 出现上述问题 

        郭强 

        1. 我没有m1环境,如果不行的话可以手动clone源码进入cmd/gf目录go install一下。

          1. 谢谢回复! 

            好的,不过目前amd的也可以用. 

            回头我用编译安装的方式试一下.

            谢谢 ~

  8. gf rc3升级了什么,和rc2区别是什么

  9. 2.0 gf,不添加到环境变量,直接执行可执行文件进行build会报错, 
    2022-03-15 13:19:20.215 gf pack config,i18n,public,template packed/build_pack_data.go 
    /bin/bash: gf:未找到命令
    2022-03-15 13:19:20.217 remove the automatically generated resource go file: packed/build_pack_data.go 
    exception recovered: exit status 127
    1. exception recovered: exit status 127
       1).  github.com/gogf/gf/v2/os/gcmd.(*Command).doRun.func1
            /home/runner/work/gf/gf/os/gcmd/gcmd_command_run.go:97
       2).  github.com/gogf/gf/v2/os/gproc.MustShellRun
            /home/runner/work/gf/gf/os/gproc/gproc_must.go:23
       3).  github.com/gogf/gf/cmd/gf/v2/internal/cmd.cBuild.Index
            /home/runner/work/gf/gf/cmd/gf/internal/cmd/cmd_build.go:203
       4).  github.com/gogf/gf/v2/os/gcmd.newCommandFromMethod.func1
            /home/runner/work/gf/gf/os/gcmd/gcmd_command_object.go:306
       5).  github.com/gogf/gf/v2/os/gcmd.(*Command).doRun
            /home/runner/work/gf/gf/os/gcmd/gcmd_command_run.go:120
       6).  github.com/gogf/gf/v2/os/gcmd.(*Command).RunWithValueError
            /home/runner/work/gf/gf/os/gcmd/gcmd_command_run.go:77
       7).  github.com/gogf/gf/v2/os/gcmd.(*Command).RunWithValue
            /home/runner/work/gf/gf/os/gcmd/gcmd_command_run.go:32
       8).  github.com/gogf/gf/v2/os/gcmd.(*Command).Run
            /home/runner/work/gf/gf/os/gcmd/gcmd_command_run.go:26
       9).  main.main
            /home/runner/work/gf/gf/cmd/gf/main.go:69

  10. 从v1版本开始使用的,更新了`gf`和`v2`后发现,以前默认命令行带参数现在无效了,

    /usr/local/bin/gf gen dao -l "mysql:root:pass@tcp(127.0.0.1:3306)/test" -t

    找了很久,发现文档里写

    > 当给定命令行参数时优先读取命令行参数,如果命令行参数不存在时,自动读取配置文件中对应的参数名称。

    然后发现`hack`中`config`参数不正确,改为正确的参数后命令才可以执行,所以说其实优先是读取配置文件了,我用的`gf`是预编译的`release`,

    > https://github.com/gogf/gf/releases/tag/v2.1.0-rc4

    大家可以测测看是不是这个情况

  11. 另外文档建议也放一下`dao`的帮助文档:

    $ /usr/local/bin/gf gen dao -h                                              
    USAGE
        gf gen dao [OPTION]
    
    OPTION
        -p, --path             directory path for generated files
        -l, --link             database configuration, the same as the ORM configuration of GoFrame
        -t, --tables           generate models only for given tables, multiple table names separated with ','
        -x, --tablesEx         generate models excluding given tables, multiple table names separated with ','
        -g, --group            specifying the configuration group name of database for generated ORM instance,
                               it's not necessary and the default value is "default"
        -f, --prefix           add prefix for all table of specified link/database tables
        -r, --removePrefix     remove specified prefix of the table, multiple prefix separated with ','
        -j, --jsonCase         generated json tag case for model struct, cases are as follows:
                               | Case            | Example            |
                               |---------------- |--------------------|
                               | Camel           | AnyKindOfString    |
                               | CamelLower      | anyKindOfString    | default
                               | Snake           | any_kind_of_string |
                               | SnakeScreaming  | ANY_KIND_OF_STRING |
                               | SnakeFirstUpper | rgb_code_md5       |
                               | Kebab           | any-kind-of-string |
                               | KebabScreaming  | ANY-KIND-OF-STRING |
        -i, --importPrefix     custom import prefix for generated go files
        -d, --daoPath          directory path for storing generated dao files under path
        -o, --doPath           directory path for storing generated do files under path
        -e, --entityPath       directory path for storing generated entity files under path
        -s, --stdTime          use time.Time from stdlib instead of gtime.Time for generated time/date fields of tables
        -w, --withTime         add created time for auto produced go files
        -n, --gJsonSupport     use gJsonSupport to use *gjson.Json instead of string for generated json fields of tables
        -v, --overwriteDao     overwrite all dao files both inside/outside internal folder
        -c, --descriptionTag   add comment to description tag for each field
        -k, --noJsonTag        {cGenDaoBriefNoJsonTag
        -m, --noModelComment   no model comment will be added for each field
        -h, --help             more information about this command
    
    EXAMPLE
        gf gen dao
        gf gen dao -l "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
        gf gen dao -p ./model -g user-center -t user,user_detail,user_login
        gf gen dao -r user_
    
    CONFIGURATION SUPPORT
        Options are also supported by configuration file.
        It's suggested using configuration file instead of command line arguments making producing.
        The configuration node name is "gfcli.gen.dao", which also supports multiple databases, for example(config.yaml):
        gfcli:
          gen:
            dao:
            - link:     "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
              tables:   "order,products"
              jsonCase: "CamelLower"
    
            - link:   "mysql:root:12345678@tcp(127.0.0.1:3306)/primary"
              path:   "./my-app"
              prefix: "primary_"
              tables: "user, userDetail"



  12. 郭强 请问V2.0是移除了swagger吗?http://localhost:8000/swagger/进去的页面只能看,不能操作