V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
cmos
V2EX  ›  Go 编程语言

gocar 0.2.0 版本:新增自定义命令功能,实现真正的 go 的 cargo

  •  
  •   cmos · 14 小时 39 分钟前 · 329 次点击

    上个帖子里面说我太喜欢rust cargo又苦于 golang 没有官方项目管理器,于是写了go 的 cargo,即 gocar 。原本只是满足我自己的日常使用场景,结果两三天就有 50 多个 star ,才知道很多人也有与我类似的痛点。为了满足不同人的实际使用场景,我为 gocar 添加了可选配置文件.gocar.toml功能,实现覆盖内置命令和添加自定义命令的功能:

    • 默认使用符合 Golang 最佳实践的项目结构和使用习惯,即内置命令

    • 执行gocar init将在项目下生成.gocar.toml项目配置文件,实现自定义命令和功能,配置文件中的设置优先级高于 gocar 内置命令

    例如,gocar new <appName>创建项目将不会生成.gocar.toml项目配置文件,需要手动执行gocar init,通过修改这个配置文件,可以实现:

    • 覆盖 gocar 内置命令

      • 修改构建入口路径、输出目录、构建标签和配置等所有gocar的实用功能
    • 提供 commands 接口,添加自定义命令

      • 例如添加lint = "golangci-lint run"实现gocar lint获取类似cargo clippy的使用体验

    更多详细使用方法,可以在 https://github.com/uselibrary/gocar 中查看文档。欢迎 issue ,尤其是实际使用中的高频命令,以便我将其添加到内置命令中来提高使用效率和表现。

    以下是.gocar.toml 的部分示例:

    # 自定义命令
    # 格式: 命令名 = "要执行的 shell 命令"
    # 使用: gocar <命令名>
    # 命令会在项目根目录下执行
    [commands]
    # 代码检查
    vet = "go vet ./..."
    
    # 代码格式化
    fmt = "go fmt ./..."
    
    # 运行测试
    test = "go test -v ./..."
    
    # lint = "golangci-lint run"
    # doc = "godoc -http=:6060"
    # proto = "protoc --go_out=. --go-grpc_out=. ./proto/*.proto"
    
    1 条回复    2025-12-22 19:23:08 +08:00
    chennqqi
        1
    chennqqi  
       9 小时 37 分钟前
    有点意思。但直接用 go 命令不行吗?
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   917 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 21:01 · PVG 05:01 · LAX 13:01 · JFK 16:01
    ♥ Do have faith in what you're doing.