diogo likes this
资源管理设计的目标之一是在开发阶段不影响静态文件的开发管理,只有在发布的时候执行打包即可,打包完毕后清理临时文件,因此只会影响生成的二进制可执行文件,对开发者来说无感知且使用便捷。
建议大家使用GoFrame
官方提供的工程化目录结构,并且使用CLI
工具来创建自己的项目工程,因为整个框架工程化思想以及一些示例都是基于标准化的工程目录结构,这样更有利于大家学习和使用整个开发框架,提高开发效率。特别是,在工程目录中存在一个packed
目录,用以存放资源管理组件的相关打包内容,在默认情况下,里面是一个空的go
文件,什么都不会做。
在开发阶段,一般来说,开发者并不需要关心资源管理的事情,该怎么撸码就怎么撸,静态的文件按照建议放到resource
目录下。在开发阶段的静态文件访问都会直接通过文件系统访问。
当开发完毕后,想要将静态文件、模板文件、配置文件打包到二进制可执行文件中,随着二进制可执行文件发布。好的,这个时候资源组件开始介入展示能力了。您需要配置到交叉编译的配置,具体请参考命令行相关章节 交叉编译-build 。我们需要使用到CLI工具来执行可执行文件编译,将您的编译配置通过配置文件管理起来(放到hack/config.yaml文件中),一个参考的编译配置如下:
gfcli: build: name: "my-app" arch: "amd64" system: "linux" mod: "none" cgo: 0 packSrc: "manifest/config,manifest/i18n,resource/public,resource/template" version: "" output: "./bin" extra: ""
请注意其中的pack
配置,表示我们在执行编译的时候自动打包到二进制可执行文件中的目录。随后,我们在项目根目录下执行编译命令:
gf build
该命令在编译时会自动将配置文件中指定的目录进行打包成临时的打包go
文件,再执行编译,编译完毕后自动清理临时的打包go
文件。
大部分场景下,配置文件可能不需要打包进二进制可执行文件,具体根据您的业务场景自行选择。
将二进制执行发布执行即可。
Powered by a free Atlassian Confluence Open Source Project License granted to GoFrame. Evaluate Confluence today.
6 Comments
白夜
gf build看起来没有按照cli的配置生效,尤其是i18n的pack。以下是我的配置文件:
以下是我的目录结构
├───DEBIAN ├───lib │ └───systemd │ └───system └───myapp ├───api ├───internal │ ├───cmd │ ├───consts │ ├───controller │ ├───dao │ ├───errorCode │ ├───model │ │ └───entity │ ├───packed │ └───service │ └───internal │ ├───dao │ │ └───internal │ └───do ├───log ├───manifest │ ├───config │ ├───deploy │ └───docker ├───resource │ ├───doc │ ├───i18n │ │ ├───en │ │ └───zh-CN │ ├───public │ ├───scripts │ └───template ├───test └───utility ├───response └───utils
使用 gf build 生成的二进制文件是main.exe,而不是配置文文件指定的配置项。i18n也没有生效。 为什么呢?
白夜
郭大佬看起来有点忙呀! 问题自己搞定了。
build没有生效,是因为配置文件写错了,toml的格式需要这么写
只是还是有疑问:
郭强 期待郭大佬的回复
郭强
嗯,是的。
yidashi
原目录是这个:
manifest/config,manifest/i18n,resource/public,resource/template
打包后目录变成:
config,i18n,public,template
不好使
白夜
那你换个姿势:
打包之后就可以用了
overbeck.jack
在使用 docker 编译的时候,需要怎么样才能包含 i18n 资源???
我的配置如下:
使用下面的 Dockerfile 进行编译运行
构建命令
运行后, i18n 资源没法加载
编译命令主要是
make build
,使用的是 gf 内置的Makefile
,但是无法加载,如果在宿主机直接执行make build
再以同样的命令运行程序,是可以加载资源的我不清楚 这个资源管理是否怎么维护静态文件的???请问可以指导一下吗?堵在这里很久了。。。 郭强