v2版本开始,项目的创建不再依赖远端获取,仓库模板已经通过资源管理的方式内置到了工具二进制文件中,因此项目创建速度非常迅速。

使用方式

$ gf init -h 
USAGE
    gf init ARGUMENT [OPTION]

ARGUMENT
    NAME    name for the project. It will create a folder with NAME in current directory.The NAME will also be the
            module name for the project.

OPTION
    -m, --mono    initialize a mono-repo instead a single-repo
	-a, --monoApp initialize a mono-repo-app instead a single-repo
    -h, --help    more information about this command

EXAMPLE
    gf init my-project
    gf init my-mono-repo -m

我们可以使用init命令在当前目录生成一个示例的GoFrame空框架项目,并可给定项目名称参数。生成的项目目录结构仅供参考,根据业务项目具体情况可自行调整。生成的目录结构请参考 代码分层设计 章节。

GoFrame框架开发推荐统一使用官方的go module特性进行依赖包管理,因此空项目根目录下也有一个go.mod文件。

工程目录采用了通用化的设计,实际项目中可以根据项目需要适当增减模板给定的目录。例如,没有kubernetes部署需求的场景,直接删除对应deploy目录即可。

使用示例

在当前目录下初始化项目

$ gf init .
initializing...
initialization done!
you can now run 'gf run main.go' to start your journey, enjoy!

创建一个指定名称的项目

$ gf init myapp
initializing...
initialization done!
you can now run 'cd myapp && gf run main.go' to start your journey, enjoy!

创建一个MonoRepo项目

默认情况下创建的是SingleRepo项目,若有需要也可以创建一个MonoRepo(大仓)项目,通过使用-m选项即可。

$ gf init mymono -m
initializing...
initialization done!

关于大仓的介绍请参考章节:微服务大仓管理模式

创建一个MonoRepoApp项目

若需要在MonoRepo(大仓)下的创建一个小仓,通过使用-a选项即可。

$ gf init app/user -a
initializing...
initialization done!

Content Menu


  • No labels

18 Comments

  1. gf 命令创建的项目,怎么升级框架最新的代码呢

    1. gf update

      然后执行 go get -u github.com/gogf/gf

      1. 执行:go get -u github.com/gogf/gf返回的版本是1.16.6,提示如下:

        go get: added github.com/gogf/gf v1.16.6

  2. gf init 不能指定框架的版本?  我看源码init直接下载的就是最新的!

  3. 建议创建项目的时候,把当前最新适配的 gf 工具也创建一份到当前的项目目录,避免后续工具升级后,新的工具操作项目造成代码不兼容,1.15、1.16在这个问题上吃了不少亏了。不管系统的 gf 工具是哪个版本,都可以使用项目里面保存的 gf 工具来操作这个项目,这样就不会乱了

  4. 建议init命令(ps: 刚接触gf,也许本建议已经实现,只是未能找到用法)

    1. 支持模块名称如:github.com/xxx/module_name/v3


  5. 怎么创建指定版本的项目,gf -v打印的fg版本是2.0的

  6. 有个问题,您这个生成的样式和您这边教程的样式差异比较大,很尴尬,建议的如web访问起步按照教程里来,您这里从命令行起步了,这边给个参数也好啊



    1. 建议从快速开始学习,若有差异点,请评论。

  7. 这一部分建议后续把hello.go去掉,把appname自动塞进去go.mod。

  8. 針對 MonoRepo 的管理,能否新增一個命令來增加 app 下的 tempalte 目錄 (新增一個 Project) ?

    1. 同问,目前只能靠复制init时候生成的三个template文件夹

  9. 如图,实际go环境是1.17。gf2.5  init出的项目,go.mod中是1.18。gf2.0 init出的go.mod中是1.15,也不是实际环境版本。这个是固定的吗,就不会自动识别当前go version?

  10. gf 版本 1.16.4,init项目时报错:initializing... 
    Error: got the project zip data failed: parse "https://gfcdn.johng.cn/cli/project/zip?<html>\r\n<head><title>502 Bad Gateway</title></head>\r\n<body>\r\n<center><h1>502 Bad Gateway</h1></center>\r\n<hr><center>nginx/1.18.0 (Ubuntu)</center>\r\n</body>\r\n</html>\r\n": net/url: invalid control character in URL 

    这个如何解决?

    1. v1版本的cli下载使用cdn,但是由于域名无法备案造成被封,所以v2版本开始都托管到github了。v1旧版本的cli可以从这个仓库go install https://github.com/gogf/gf-cli

  11. 不显示其它内容是什么情况