golang项目专属命令行管理工具插件1build的使用

Golang项目专属命令行管理工具插件1build的使用

1build是一个用于研发项目的自动化工具,它可以让你配置项目本地的命令行别名,然后快速轻松地运行这些命令。当你需要处理多个项目并经常在它们之间切换时,这个工具特别有用。

安装

Homebrew安装方式

brew install gopinath-langote/one-build/one-build

手动安装方式

  1. 从最新发布版本下载并安装二进制文件
  2. 推荐:将1build可执行文件添加到你的$PATH

使用

配置

  1. 创建1build.yaml配置文件:
1build init --name <your_project_name>
  1. 根据项目命令列表编辑文件,以下是一个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

使用beforeafter命令

这些命令可以用于设置运行命令前和后的环境。

示例:

  1. 设置环境变量并清理:
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
  1. 确保Docker运行:
1build set before "./docker_run.sh"
  1. 命令后清理数据库:
1build set after "./clean_database.sh"
  1. 移除beforeafter命令:
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

1 回复

更多关于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项目的理想选择。

回到顶部