专业的 Go 语言可视化编译配置工具,支持交叉编译、竞态检测、Build Tags、Module 管理、自定义 Ldflags、预设配置等高级功能。

通过直观的 WebView 界面配置所有编译选项,无需记忆复杂的命令行参数。
自动识别项目结构,生成准确的二进制文件名:
demo-linux-amd64)myproject-client-linux-amd64)client-linux-amd64)server.go、cmd.go、app.go 等任意 Go 文件/v2、/v3 等版本后缀2025-11-12T12:42:28Z)支持 多种平台组合:
# 一键打包多平台
📦 Linux (amd64, arm64)
📦 Windows (amd64)
📦 macOS (amd64, arm64)
📦 FreeBSD, OpenBSD, NetBSD
📦 Android, WASM
📦 MIPS, RISC-V, PowerPC, S390X
ZCli 预设开关:
{
"goBuild.zcli.enabled": true
}
Ctrl+Shift+X(macOS: Cmd+Shift+X)打开扩展面板# 下载 .vsix 文件
# 在 VSCode 中执行
code --install-extension vscode-build-gui-go-0.1.7.vsix
goimports - 自动管理导入golangci-lint - 代码质量检查方式一: 点击编辑器标题栏的 ⚙️ 图标(在 .go 文件中)
方式二: Ctrl+Shift+P → 输入 "打开 Go 编译面板"
方式三: 右键 .go 文件 → "显示编译选项"
⚡ 快速预设 ┌─────────┬─────────┬─────────┬─────────┐ │ 🛠️ 开发 │ 🚀 生产 │ 🐛 调试 │ ⚙️ 自定义 │ └─────────┴─────────┴─────────┴─────────┘
💻 目标系统: Linux, Windows, macOS, Android, WASM... 🏗️ 目标架构: AMD64, ARM64, MIPS, RISC-V, S390X...
点击 "🔨 开始编译" 按钮或 "📦 一键打包项目"(多平台)
| 选项 | 说明 |
|---|---|
| 🏃 竞态检测 | 启用 -race 标志检测数据竞态(自动启用 CGO) |
| 🚀 优化编译 | 启用编译器优化 |
| 🗜️ 压缩体积 | 使用 -ldflags "-s -w" 移除符号表 |
| 🔗 CGO | 启用 CGO 支持(竞态检测时自动启用) |
| 🔨 强制重建 | 使用 -a 强制重新编译所有包 |
| ✂️ 移除路径 | 使用 -trimpath 移除文件系统路径 |
| 👁️ 仅预览 | 显示命令但不执行(学习模式) |
| 📋 详细输出 | 显示详细编译信息 |
| 操作 | 命令 | 用途 |
|---|---|---|
| ✨ init | go mod init | 初始化模块 |
| 🧹 tidy | go mod tidy | 整理依赖 |
| 📥 download | go mod download | 下载依赖 |
| ✓ verify | go mod verify | 验证依赖完整性 |
| 📦 vendor | go mod vendor | 创建 vendor 目录 |
| 工具 | 功能 |
|---|---|
| 🧪 test | 运行所有测试 |
| 📋 test -v | 详细测试输出 |
| ⚡ bench | 基准测试 |
| 📊 coverage | 代码覆盖率 |
| 🌐 cover html | HTML 覆盖率报告 |
| 工具 | 功能 |
|---|---|
| ✨ fmt | 格式化代码 |
| 📦 imports | 管理导入 |
| 🔍 vet | 静态检查 |
| 🚨 lint | 代码质量检查 |
| 🔨 generate | 代码生成 |
| 📥 install | 安装到 $GOBIN |
| 🧹 clean | 清理编译产物 |
| 🗑️ clean cache | 清理所有缓存 |
| 🌐 env | 查看环境变量 |
// 在代码中定义变量
package main
var (
Version string
BuildTime string
GitCommitID string
GitBranch string
GoVersion string
BuildUser string
)
使用安全的模板占位符(v0.1.7+):
| 按钮 | 模板占位符 | 运行时替换为 |
|---|---|---|
| 📌 版本 | -X main.Version={{.Version}} | Git tag 或 commit ID |
| ⏰ 时间 | -X main.BuildTime={{.BuildTime}} | ISO 8601 时间戳 |
| 🔖 CommitID | -X main.GitCommitID={{.GitCommit}} | Git commit 短哈希 |
| 🌿 分支 | -X main.GitBranch={{.GitBranch}} | 当前 Git 分支名 |
| 🐹 Go 版本 | -X main.GoVersion={{.GoVersion}} | Go 版本(如 go1.23.4) |
| 👤 编译者 | -X main.BuildUser={{.User}} | 当前用户名 |
| ✨ 全部 | 一键插入所有常用标志 | - |
安全特性:
设置环境变量:
# Bash/Zsh
export GOBUILD_WELCOME_CMD="go version"
# Fish
set -x GOBUILD_WELCOME_CMD "go version"
# PowerShell
$env:GOBUILD_WELCOME_CMD = "go version"
行为:
重置: Ctrl+Shift+P → "重置欢迎命令执行状态"
# 每次打开新终端都执行
export GOBUILD_TERMINAL_INIT="export GOPROXY=https://goproxy.cn,direct"
配置选项(v0.1.7+):
{
"goBuild.terminalInit.enabled": true,
"goBuild.terminalInit.delay": 500,
"goBuild.terminalInit.excludeTaskTerminals": true,
"goBuild.terminalInit.showNotification": false,
"goBuild.terminalInit.reuseBehavior": "smart",
"goBuild.terminalInit.probeTimeoutMs": 500,
"goBuild.terminalInit.command": "",
"goBuild.welcomeCmd.command": ""
}
复用策略说明:
| 策略 | 行为 |
|---|---|
smart | 探测终端占用状态后决定是否注入(默认,推荐) |
always | 每次打开终端都注入,不探测 |
never | 若已有同名终端则跳过,避免重复注入 |
扩展内置 38 种危险命令检测,自动阻止:
rm -rf /)shutdown, reboot)curl | sh)nc -e)/etc/shadow)完整的文档体系:
| 文档 | 描述 | 适用人群 |
|---|---|---|
| 用户手册 | 详细的使用指南、功能说明、常见问题 | Go 开发者、用户 |
| 开发者文档 | 开发环境搭建、API 参考、扩展指南 | 贡献者、开发者 |
| 架构文档 | 系统架构、设计原则、技术选型 | 架构师、技术决策者 |
| 变更日志 | 版本历史、新增功能、Bug 修复 | 所有用户 |
{
// 基础配置
"goBuild.outputDir": "./bin",
"goBuild.showNotifications": true,
"goBuild.defaultPreset": "dev",
// 欢迎命令
"goBuild.welcomeCmd.enabled": true,
"goBuild.welcomeCmd.command": "",
// 终端初始化
"goBuild.terminalInit.enabled": true,
"goBuild.terminalInit.delay": 500,
"goBuild.terminalInit.excludeTaskTerminals": true,
"goBuild.terminalInit.reuseBehavior": "smart",
"goBuild.terminalInit.probeTimeoutMs": 500,
"goBuild.terminalInit.command": ""
}
# 欢迎命令
export GOBUILD_WELCOME_CMD="your-command"
# 终端初始化
export GOBUILD_TERMINAL_INIT="your-init-script"
{{.placeholder}} 语法替代 shell 命令执行vscode-build-gui-go/ ├── src/ │ ├── extension.ts # 主入口 │ ├── common/ # 公共模块 │ │ ├── constants.ts # 常量定义 │ │ ├── types.ts # 类型定义 │ │ └── utils.ts # 工具函数 │ ├── features/ # 功能模块 │ │ ├── build/ # 编译功能(10个文件) │ │ │ ├── buildProvider.ts │ │ │ ├── buildCommands.ts │ │ │ ├── buildConfig.ts │ │ │ ├── buildActions.ts │ │ │ ├── ldflags.ts # Ldflags 模板解析 (NEW) │ │ │ ├── webview/ │ │ │ │ └── index.ts # WebView HTML (重构) │ │ │ ├── router/ │ │ │ │ └── messageHandler.ts # 消息路由 (NEW) │ │ │ └── service/ │ │ │ ├── compileService.ts # 编译服务 (NEW) │ │ │ └── packageService.ts # 打包服务 (NEW) │ │ ├── terminal/ # 终端功能(2个文件) │ │ │ ├── terminalInit.ts # 改进去重逻辑 │ │ │ └── welcomeCommand.ts │ │ ├── security/ # 安全功能 │ │ │ └── commandValidator.ts │ │ └── tools/ # 工具功能(3个文件) │ └── ... ├── tests/ # 单元测试 │ ├── compileService.test.ts │ ├── buildNaming.test.ts │ └── packageService.test.ts └── docs/ # 文档目录
重构亮点:
欢迎贡献代码、报告问题、提出建议!
git checkout -b feature/xxxgit commit -m "feat: xxx"git push origin feature/xxx# 克隆仓库
git clone https://github.com/darkit/vscode-go-build.git
cd vscode-go-build
# 安装依赖
npm install
# 编译
npm run compile
# 监听模式
npm run watch
# 调试:按 F5 启动扩展开发主机
详见 开发者文档
A: 确保打开了 .go 文件,Go 已正确安装并在 PATH 中。
A: 尝试设置 CGO_ENABLED=0,某些包依赖 CGO 无法交叉编译。
A: 检查环境变量是否设置,查看输出面板 "Zishuo Terminal Init" 的日志。
A: 启用 "详细输出" 选项,查看输出面板 "Go Build"。
更多问题参见 用户手册 - 常见问题
本项目采用 MIT License 开源。
感谢所有贡献者和使用者的支持!
特别感谢:
Made with ❤️ by ZiShuo
如果这个项目对你有帮助,请给一个 ⭐️ Star!