golang项目专属命令行管理工具插件1build的使用
Golang项目专属命令行管理工具插件1build的使用
1build是一个用于研发项目的自动化工具,它可以让你配置项目本地的命令行别名,然后快速轻松地运行这些命令。当你需要处理多个项目并经常在它们之间切换时,这个工具特别有用。
安装
Homebrew安装方式
brew install gopinath-langote/one-build/one-build
手动安装方式
- 从最新发布版本下载并安装二进制文件
- 推荐:将
1build
可执行文件添加到你的$PATH
中
使用
配置
- 创建
1build.yaml
配置文件:
1build init --name <your_project_name>
- 根据项目命令列表编辑文件,以下是一个Node项目的
1build.yaml
示例:
project: Sample Web App
commands:
- build: npm run build
- test: npm run test
运行示例
- 构建项目:
1build build
- 修复编码规范lint并运行测试(一次执行多个命令):
1build lint test
设置或更新配置
- 为
lint
设置新命令配置:
1build set lint "eslint server.js"
删除/取消设置现有配置
- 取消设置
lint
的命令配置:
1build unset lint
- 一次取消设置多个命令:
1build unset lint test build
使用before
和after
命令
这些命令可以用于设置运行命令前和后的环境。
示例:
- 设置环境变量并清理:
1build set before 'export VARNAME="my value"'
1build set after "unset VARNAME"
对应的配置文件:
project: Sample Web App
before: export VARNAME="my value"
after: unset VARNAME
commands:
- build: npm run build
- 确保Docker运行:
1build set before "./docker_run.sh"
- 命令后清理数据库:
1build set after "./clean_database.sh"
- 移除
before
和after
命令:
1build unset before after
使用--quiet
或-q
标志
这个标志可以让你只看到命令执行的成功/失败结果,而不显示全部输出。
1build lint test --quiet
或
1build lint test -q
完整示例Demo
以下是一个完整的Golang项目1build配置示例:
project: My Go Project
before: export GOPATH=$(pwd)
after: unset GOPATH
commands:
- build: go build ./...
- test: go test ./...
- lint: golangci-lint run
- coverage: go test -coverprofile=coverage.out ./... && go tool cover -html=coverage.out
使用示例:
# 运行测试
1build test
# 运行lint和测试(安静模式)
1build lint test -q
# 查看测试覆盖率
1build coverage
这个工具可以帮助你统一不同项目的构建命令,减少记忆负担,提高工作效率。
更多关于golang项目专属命令行管理工具插件1build的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang项目专属命令行管理工具插件1build的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Golang项目命令行管理工具1build的使用指南
1build是一个专为Golang项目设计的轻量级命令行构建工具,它可以帮助开发者简化项目构建流程,管理多环境配置,并自动化常见开发任务。
1build基本概念
1build通过一个简单的YAML配置文件(.1build.yaml
)来定义项目的构建和运行命令,主要特点包括:
- 简化复杂命令
- 支持多环境配置
- 与Golang项目无缝集成
- 提供快捷命令执行方式
安装1build
# 使用go install安装
go install github.com/gopinath-langote/1build@latest
# 或者下载预编译二进制
# 从GitHub releases页面下载对应平台的二进制文件
基本使用
1. 初始化项目
在Golang项目根目录运行:
1build init
这会创建一个基本的.1build.yaml
配置文件。
2. 典型Golang项目配置示例
project: my-golang-app
commands:
- name: run
cmd: go run main.go
before: go mod tidy
- name: build
cmd: go build -o bin/app
- name: test
cmd: go test ./...
- name: coverage
cmd: go test -coverprofile=coverage.out ./... && go tool cover -html=coverage.out
- name: lint
cmd: golangci-lint run
- name: clean
cmd: rm -rf bin/ coverage.out
3. 使用1build命令
# 列出所有可用命令
1build list
# 执行特定命令
1build run
1build test
1build build
# 带参数的命令
1build run -- --port=8080
高级功能
多环境配置
environments:
- name: dev
variables:
DB_HOST: localhost
DB_PORT: "5432"
- name: prod
variables:
DB_HOST: prod-db.example.com
DB_PORT: "5432"
commands:
- name: migrate
cmd: go run cmd/migrate/main.go
env: ${ENV:-dev}
使用不同环境:
ENV=prod 1build migrate
前后钩子
commands:
- name: deploy
before: git pull origin main
cmd: ./scripts/deploy.sh
after: |
echo "Deployment complete"
curl -X POST https://hooks.slack.com/...
组合命令
commands:
- name: all
commands:
- lint
- test
- build
Golang项目最佳实践配置
project: my-service
environments:
- name: local
variables:
CONFIG_PATH: ./config/local.yaml
- name: staging
variables:
CONFIG_PATH: ./config/staging.yaml
commands:
- name: dev
cmd: air -c .air.toml
before: go mod tidy
- name: build
cmd: go build -ldflags "-X main.Version=1.0.0" -o bin/app
- name: test
cmd: richgo test -v ./...
- name: integration-test
cmd: go test -tags=integration ./...
- name: bench
cmd: go test -bench=. ./...
- name: proto
cmd: |
protoc --go_out=. --go-grpc_out=. proto/*.proto
go mod tidy
- name: docker-build
cmd: docker build -t my-service .
- name: ci
commands:
- lint
- test
- integration-test
- build
与Makefile的对比
1build相比Makefile的优势:
- 更简单的YAML语法
- 内置环境变量管理
- 更好的命令组织和组合
- 更直观的命令行界面
总结
1build为Golang项目提供了一个简单而强大的命令行管理工具,特别适合需要管理多个构建步骤和环境配置的项目。通过.1build.yaml
文件,团队可以标准化开发流程,减少复杂的命令行记忆,提高开发效率。
对于更复杂的Golang项目,可以结合1build和其他工具如Taskfile或Makefile使用,但1build的简洁性使其成为大多数中小型Golang项目的理想选择。