GB构建工具命令实战指南:build、test、list等10大核心命令用法详解
【免费下载链接】gbgb, the project based build tool for Go项目地址: https://gitcode.com/gh_mirrors/gb/gb
gb是一款面向 Go 语言的项目式构建工具(build tool),通过gb build、gb test、gb list等 10 大核心命令,帮助你在无需配置 GOPATH 环境变量的情况下完成编译、测试、文档查看与依赖管理。本指南面向新手,带你逐一掌握每条命令的实际用法 ⚡️
什么是 GB:30 秒了解项目式构建
gb的核心理念是"项目"(Project):一个包含src/子目录的文件夹就是一个 gb 项目,gb 会自动从当前目录向上查找src/来定位项目根目录,无需设置任何环境变量(详见 README.md)。
一个最小项目结构如下:
myproject/ ├── src/ │ └── github.com/ │ └── example/ │ └── hello/ │ └── hello.go └── vendor/ # 依赖(可选)进入项目任意子目录,gb 都能识别项目根,切换项目只需切换目录,非常省心。
快速安装 GB 构建工具
安装只需一条命令(gb 本身也是用 Go 写的,见 cmd/gb/main.go):
go get github.com/constabulary/gb/...安装完成后,运行gb help查看全部命令列表,帮助文本由 cmd/gb/help.go 中的usageTemplate动态生成,支持gb help <command>查看单条命令详情。
核心命令 1:gb build 编译打包
gb build是最高频命令,用于编译指定包及其全部依赖(实现见 cmd/gb/build.go):
# 编译单个包 gb build github.com/example/hello # 编译项目内所有包(all 是内置别名,等价于 ... 通配) gb build all常用构建参数(定义于 cmd/gb/build.go 的addBuildFlags):
| 参数 | 作用 |
|---|---|
-f | 忽略缓存,强制重新编译 |
-F | 跳过包缓存 |
-P | 并行任务数,默认为 CPU 核心数 |
-r | 执行 release 构建(加 +release 标签) |
-race | 启用数据竞争检测(限 amd64 平台) |
-ldflags/-gcflags | 传递给链接器 / 编译器的参数 |
-tags | 添加构建标签 |
-dotfile | 输出构建步骤的 dot 图文件,便于分析构建依赖 |
💡 小技巧:编译产物统一输出到bin/,编译缓存存放于pkg/,用-dotfile生成构建 DAG 后再用图形化工具查看,是排查构建顺序问题的利器(dot 输出逻辑见 cmd/gb/dot.go)。
核心命令 2:gb test 自动化测试
gb test会重新编译每个包及其*_test.go文件并执行测试(实现见 cmd/gb/test.go):
# 测试指定包,-v 显示子进程详细输出 gb test -v github.com/example/hello # 只编译不执行测试二进制(快速验证可编译性) gb test -n all特色参数:
| 参数 | 作用 |
|---|---|
-v | 输出测试子进程的详细结果 |
-n | 仅编译,不执行测试二进制 |
-cover/-covermode/-coverpkg | 启用覆盖率分析 |
测试包以稳定字母序执行,与go test行为一致;底层测试解析器见 test/resolve.go。
核心命令 3:gb list 列出项目包
gb list列出项目导入的所有包,默认输出 import path(实现见 cmd/gb/list.go):
gb list github.com/constabulary/...三个实用参数:
-f '{{.GoFiles}}':使用模板自定义输出字段-s:从标准输入读取模板-json:以 JSON 结构输出(注意gb.Package结构不稳定,见 cmd/gb/list.go 中的PackageView)
核心命令 4:gb info 查看项目信息
gb info打印 gb 环境信息,并在项目结构合法时返回 0(实现见 cmd/gb/info.go):
| 变量 | 含义 |
|---|---|
GB_PROJECT_DIR | 项目根目录 |
GB_SRC_PATH | 项目源码目录列表 |
GB_PKG_DIR | 包缓存路径 |
GB_BIN_SUFFIX | 输出二进制后缀 |
GB_GOROOT | 构建 gb 时所用的 Go 版本 GOROOT |
脚本中可用gb info GB_PROJECT_DIR单独获取某个变量,方便 CI 集成。
核心命令 5:gb env 打印项目环境变量
gb env与gb info输出同源(命令注册见 cmd/gb/env.go),可打印全部或指定名称的项目环境变量,常用于编写跨平台的构建脚本时确认 gb 的工作上下文。
核心命令 6:gb doc 查看包文档
gb doc显示包或符号的文档(实现见 cmd/gb/doc.go):
# 查看当前目录包文档(默认参数为 .) gb doc # 查看指定符号 gb doc github.com/example/hello MyFunc该命令会自动将GOPATH设置为项目目录:项目目录/vendor后调用godoc,因此无需手动配置即可查到 vendored 依赖的文档。
核心命令 7:gb generate 代码生成
gb generate执行源文件中//go:generate指令描述的外部命令,用于生成或更新 Go 源文件(实现见 cmd/gb/generate.go):
# 按正则筛选要执行的指令 gb generate -run mygen all它同样会自动注入项目vendor路径到GOPATH,与go generate行为保持一致。
核心命令 8:gb vendor 依赖管理插件
gb 支持 git 风格插件机制:任何$PATH中以gb-开头的可执行文件都会成为对应子命令(插件查找逻辑见 cmd/gb/plugin.go)。gb-vendor插件(源码在 cmd/gb-vendor/)就是典型代表:
# 获取依赖到 vendor/ gb vendor fetch -tag v1.0.0 github.com/constabulary/gb # 更新到 master 分支最新 gb vendor update -all # 查看 / 恢复 / 删除 / 清理依赖 gb vendor list gb vendor restore gb vendor delete gb vendor purge注意:使用-tag或-revision获取的依赖是 "headless" 的,无法直接 update,需先 delete 再 fetch(限制说明见 cmd/gb-vendor/update.go)。
核心命令 9:gb depset 依赖集合分析
gb depset(实现见 cmd/gb/depset.go)汇总 GOROOT、项目src/与 vendor 依赖的导入路径集合,是分析依赖来源、排查包解析冲突的进阶工具,适合在依赖出现二义性时定位问题根源。
核心命令 10:gb help 与全局参数
gb help [command]查看任意命令的详细用法;不带参数则打印全部命令清单(模板见 cmd/gb/help.go)。此外所有命令共享两个全局参数:
| 参数 | 作用 |
|---|---|
-R | 指定项目根搜索起点(默认当前目录),见 cmd/gb/main.go |
-d | 开启调试输出 |
实战速查表
| 场景 | 推荐命令 |
|---|---|
| 日常编译 | gb build all |
| 强制重新编译 | gb build -f all |
| 跑测试并看细节 | gb test -v all |
| 确认包能否编译 | gb test -n all |
| 摸清项目结构 | gb list all |
| CI 中取项目路径 | gb info GB_PROJECT_DIR |
| 升级依赖 | gb vendor update -all |
小结
gb 用"项目即一切"的极简设计取代了 GOPATH 时代的环境配置负担:build编译、test测试、list查包、info/env查看环境、doc/generate辅助开发,再配合gb vendor插件管理依赖,10 大核心命令覆盖了 Go 项目从开发到交付的完整链路。从gb build all开始动手,你会很快体会项目式构建的便利 🚀
【免费下载链接】gbgb, the project based build tool for Go项目地址: https://gitcode.com/gh_mirrors/gb/gb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考