gomodx 是一个面向真实工程迁移场景的 Go module 扩展工具箱,当前聚焦于 module path rename / migrate。
它解决的问题不是“把 go.mod 里一行文本改掉”,而是把真实项目里分散在多个文件、多个模块、replace、测试代码乃至可选 vendor/ 目录中的 module path 迁移工作,收敛成一条稳定、可回滚、可脚本化的命令。
gomodx doctor [old-module] [new-module]gomodx fix <old-module> <new-module>gomodx rename <old-module> <new-module>gomodx diff <old-module> <new-module>gomodx versiongomodx completionmigrate作为rename的兼容别名
rename 会处理:
- 根
go.mod - 子模块
go.mod module声明require中匹配旧 module 前缀的项replace中匹配旧 module 前缀的项- 所有
.go文件中的 import path - 可选
vendor/
关键约束:
- Go import 改写基于 AST
go.mod改写基于golang.org/x/mod/modfile- 默认支持备份
- 支持 dry-run、verbose、JSON 摘要
go run . version
go run . doctor --path .
go run . doctor github.com/old/repo github.com/new/repo --path .
go run . fix github.com/old/repo github.com/new/repo --path . --dry-run
go run . rename github.com/old/repo github.com/new/repo --path .
go run . diff github.com/old/repo github.com/new/repo --path .dry-run 示例:
go run . rename github.com/old/repo github.com/new/repo --path . --dry-run --jsongomodx rename <old-module> <new-module> [flags]常用 flags:
--path
--dry-run
--backup
--verbose
--no-tidy
--include-vendor
--json
--module-only
--imports-only说明:
--backup默认开启--module-only与--imports-only不能同时指定--dry-run不会写文件,也不会执行go mod tidy- 默认会对扫描到的模块目录执行
go mod tidy
gomodx doctor [old-module] [new-module] [flags]适合:
- 查看当前目录里有多少个模块和 Go 文件
- 检查是否存在 vendor 目录和多模块结构
- 在真正执行 rename 之前做参数和影响范围预检
- 配合
--module-only、--imports-only缩小 rename 预检范围
gomodx fix <old-module> <new-module> [flags]适合:
- 先自动做
doctor预检,再执行 rename - 在一个命令里完成“检查 + 修复”
- 配合
--dry-run先演练完整修复链路
gomodx versiongomodx completion bash
gomodx completion zsh
gomodx completion fish
gomodx completion powershellgomodx diff <old-module> <new-module> [flags]适合:
- 在真正写文件前先看统一 diff
- 人工审阅 rename 会改哪些文件和行
- 配合
--module-only、--imports-only缩小预览范围
gofmt -w .
go test ./...更多说明见:
docs/architecture.mddocs/command-usage.mddocs/test-strategy.md