Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Go可视化编译助手New to Visual Studio Code? Get it now.
Go可视化编译助手

Go可视化编译助手

子说

|
17 installs
| (0) | Free
专业的可视化Go编译配置工具,支持交叉编译、竞态检测、Build Tags、Module管理、自定义Ldflags、预设配置等高级功能
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Go 可视化编译助手

Version License Go VSCode

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

Go Build Extension

安装 • 快速开始 • 功能特性 • 文档 • 贡献


✨ 核心特性

🎯 可视化配置界面

通过直观的 WebView 界面配置所有编译选项,无需记忆复杂的命令行参数。

  • ⚡ 4 种快速预设 - 开发/生产/调试/自定义模式一键切换
  • 💻 11 种操作系统 - Windows、Linux、macOS、FreeBSD、Android、WASM 等
  • 🏗️ 11 种目标架构 - x86、ARM、MIPS、RISC-V、PowerPC、S390X 等
  • 📦 Module 管理 - init/tidy/download/verify/vendor 一键操作
  • 🧪 测试工具集成 - test/bench/coverage HTML 报告
  • 🔧 开发工具 - fmt/imports/vet/lint/generate/install/clean/env
  • 🏷️ Build Tags - 条件编译支持
  • 🔗 Ldflags 快速插入 - 版本/时间/CommitID/分支/Go 版本/用户名

🎯 智能编译命名系统 (v0.1.7)

自动识别项目结构,生成准确的二进制文件名:

  • Monorepo 支持 - 自动识别多二进制项目,避免命名冲突
    • 子目录有 go.mod: 使用模块名 (demo-linux-amd64)
    • 共享根 go.mod: 组合命名 (myproject-client-linux-amd64)
    • 无 go.mod: 使用目录名 (client-linux-amd64)
  • 任意文件名 - 支持 server.go、cmd.go、app.go 等任意 Go 文件
  • 智能版本处理 - 自动去除 /v2、/v3 等版本后缀
  • ISO 8601 时间 - 标准时间格式 (2025-11-12T12:42:28Z)

🚀 强大的交叉编译

支持 多种平台组合:

# 一键打包多平台
📦 Linux (amd64, arm64)
📦 Windows (amd64)
📦 macOS (amd64, arm64)
📦 FreeBSD, OpenBSD, NetBSD
📦 Android, WASM
📦 MIPS, RISC-V, PowerPC, S390X

🛡️ 安全终端集成

  • 欢迎命令 - 首次打开项目自动执行(后台运行)
  • 终端初始化 - 每次打开新终端自动执行
  • 危险命令检测 - 38 种恶意模式自动阻止

⚙️ 智能配置管理

  • 自动保存 - 配置自动保存到工作区
  • 智能冲突处理 - 自动处理选项依赖关系
  • 实时预览 - 命令实时显示
  • 独立配置 - 不同项目独立配置

ZCli 预设开关:

{
  "goBuild.zcli.enabled": true
}

📦 安装

从 VSCode 市场安装

  1. 打开 VSCode
  2. 按 Ctrl+Shift+X(macOS: Cmd+Shift+X)打开扩展面板
  3. 搜索 "Go 可视化编译助手"
  4. 点击安装

从 VSIX 安装

# 下载 .vsix 文件
# 在 VSCode 中执行
code --install-extension vscode-build-gui-go-0.1.7.vsix

前置要求

  • VSCode: >= 1.60.0
  • Go: >= 1.16(推荐 1.23+)
  • 可选工具:
    • goimports - 自动管理导入
    • golangci-lint - 代码质量检查

🚀 快速开始

1. 打开编译面板

方式一: 点击编辑器标题栏的 ⚙️ 图标(在 .go 文件中)

方式二: Ctrl+Shift+P → 输入 "打开 Go 编译面板"

方式三: 右键 .go 文件 → "显示编译选项"

2. 选择预设配置

⚡ 快速预设
┌─────────┬─────────┬─────────┬─────────┐
│ 🛠️ 开发  │ 🚀 生产  │ 🐛 调试  │ ⚙️ 自定义 │
└─────────┴─────────┴─────────┴─────────┘
  • 🛠️ 开发 - 快速编译,保留调试信息
  • 🚀 生产 - 最大优化,最小体积
  • 🐛 调试 - 竞态检测,详细输出
  • ⚙️ 自定义 - 手动配置所有选项

3. 配置目标平台

💻 目标系统: Linux, Windows, macOS, Android, WASM...
🏗️ 目标架构: AMD64, ARM64, MIPS, RISC-V, S390X...

4. 开始编译

点击 "🔨 开始编译" 按钮或 "📦 一键打包项目"(多平台)


🎯 功能特性

编译选项

选项 说明
🏃 竞态检测 启用 -race 标志检测数据竞态(自动启用 CGO)
🚀 优化编译 启用编译器优化
🗜️ 压缩体积 使用 -ldflags "-s -w" 移除符号表
🔗 CGO 启用 CGO 支持(竞态检测时自动启用)
🔨 强制重建 使用 -a 强制重新编译所有包
✂️ 移除路径 使用 -trimpath 移除文件系统路径
👁️ 仅预览 显示命令但不执行(学习模式)
📋 详细输出 显示详细编译信息

Module 管理

操作 命令 用途
✨ 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 查看环境变量

Ldflags 模板占位符

// 在代码中定义变量
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}} 当前用户名
✨ 全部 一键插入所有常用标志 -

安全特性:

  • ✅ 使用预定义占位符,不执行任意 shell 命令
  • ✅ 编译时自动替换为实际值
  • ✅ 跨平台兼容(Windows/Linux/macOS)
  • ✅ 无安全风险

🛡️ 终端集成

欢迎命令(首次执行)

设置环境变量:

# 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)
  • ❌ 反向 Shell(nc -e)
  • ❌ 敏感文件访问(/etc/shadow)

📖 文档

完整的文档体系:

文档 描述 适用人群
用户手册 详细的使用指南、功能说明、常见问题 Go 开发者、用户
开发者文档 开发环境搭建、API 参考、扩展指南 贡献者、开发者
架构文档 系统架构、设计原则、技术选型 架构师、技术决策者
变更日志 版本历史、新增功能、Bug 修复 所有用户

🔧 配置

VSCode 配置

{
  // 基础配置
  "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"

🆕 v0.1.7 新特性

体验改进

  • ✅ 任务状态统一 - 编译/打包/测试/工具命令统一状态提示与按钮锁定
  • ✅ 编译命名优化 - 更准确的多入口与子模块命名规则
  • ✅ 打包命名一致 - 一键打包产物命名与编译命名保持一致

安全性改进

  • ✅ 输入净化 - 模块/参数输入统一转义,降低注入风险
  • ✅ Ldflags 模板化 - 使用安全的 {{.placeholder}} 语法替代 shell 命令执行

代码质量

  • ✅ 命名逻辑收敛 - 编译产物命名集中到公共工具函数
  • ✅ 单元测试补齐 - 增加命名、打包一致性与无 Go 文件场景覆盖

📊 架构特点

模块化设计(v0.1.7)

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/                       # 文档目录

重构亮点:

  • ✅ 职责分离 - 提取服务层,业务逻辑独立
  • ✅ 安全增强 - Ldflags 模板化,移除 shell 注入风险
  • ✅ 可测试性 - 新增单元测试覆盖
  • ✅ 可维护性 - WebView HTML 模块化组织

技术栈

  • 语言: TypeScript 4.4.4
  • 框架: VSCode Extension API 1.60+
  • 打包: Webpack 5.102
  • UI: 原生 JavaScript(零框架依赖)

🤝 贡献

欢迎贡献代码、报告问题、提出建议!

贡献流程

  1. Fork 本仓库
  2. 创建功能分支:git checkout -b feature/xxx
  3. 提交更改:git commit -m "feat: xxx"
  4. 推送分支:git push origin feature/xxx
  5. 提交 Pull Request

开发指南

# 克隆仓库
git clone https://github.com/darkit/vscode-go-build.git
cd vscode-go-build

# 安装依赖
npm install

# 编译
npm run compile

# 监听模式
npm run watch

# 调试:按 F5 启动扩展开发主机

详见 开发者文档

代码规范

  • 遵循 TypeScript strict 模式
  • 函数添加 JSDoc 注释
  • 提交信息遵循 Conventional Commits
  • 所有代码经过 ESLint 检查

📝 常见问题

Q: 扩展没有自动激活?

A: 确保打开了 .go 文件,Go 已正确安装并在 PATH 中。

Q: 交叉编译失败?

A: 尝试设置 CGO_ENABLED=0,某些包依赖 CGO 无法交叉编译。

Q: 终端命令不执行?

A: 检查环境变量是否设置,查看输出面板 "Zishuo Terminal Init" 的日志。

Q: 如何查看详细错误?

A: 启用 "详细输出" 选项,查看输出面板 "Go Build"。

更多问题参见 用户手册 - 常见问题


📜 许可证

本项目采用 MIT License 开源。


🔗 相关链接

  • GitHub: https://github.com/darkit/vscode-go-build
  • 问题反馈: https://github.com/zishuo/issues
  • 作者主页: https://www.zishuo.net
  • Go 官方文档: https://go.dev/doc/

🙏 致谢

感谢所有贡献者和使用者的支持!

特别感谢:

  • Go 团队提供优秀的工具链
  • VSCode 团队提供强大的扩展 API
  • 所有提供反馈和建议的用户

Made with ❤️ by ZiShuo

如果这个项目对你有帮助,请给一个 ⭐️ Star!

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft