Veronica
的目标是成为Go项目的差异化构建指导工具。试想一下,如果你的项目分为许多微服务,而这个项目是以Monorepo的形式组织的,那么每次构建时,因为无法知道修改的文件会影响哪些服务,因此必须要构建所有的服务。Veronica
就是为了解决这一问题而诞生的,给定一个或多个文件,Veronica
会帮您分析项目的依赖, 并告知您该文件可能会产生哪些影响。
🚧 本项目仍处于早期阶段, 可能会经常变动
- Git
- 项目使用go module
- 安装veronica
go install github.com/bootun/veronica@latest
- 在项目的根目录放置veronica.yaml文件
- 切换至项目目录,并运行veronica:
cd $PROJECT_DIR
veronica report .
详细输出效果:
改动了 pkg/apigateway/spec 包中的 pkg/apigateway/spec/api.swagger.json 文件,可能会影响这些包的构建: - cmd/api-gateway 改动了 pkg/apigateway/spec 包中的 pkg/apigateway/spec/static.go 文件,可能会影响这些包的构建: - cmd/api-gateway改动了 pkg/pb 包中的 pkg/pb/merchant_assets.pb.go 文件,可能会影响这些包的构建: - cmd/api-gateway - cmd/assets-cron - cmd/currency-cron - cmd/iam-cron - cmd/iam-manager - cmd/across-cron - cmd/assets-manager - cmd/currency-manager - cmd/system-cron - cmd/system-manager - cmd/across-manager
改动了 pkg/pb 包中的 pkg/pb/merchant_assets.pb.gw.go 文件,可能会影响这些包的构建: - cmd/api-gateway - cmd/assets-cron - cmd/currency-cron - cmd/iam-cron - cmd/iam-manager - cmd/across-cron - cmd/assets-manager - cmd/currency-manager - cmd/system-cron - cmd/system-manager - cmd/across-manager
改动了 pkg/service/assets 包中的 pkg/service/assets/handler_merchant_assets.go 文件,可能会影响这些包的构建: - cmd/assets-manager
简略输出效果:
cmd/api-gateway cmd/across-cron cmd/currency-cron cmd/iam-manager cmd/system-cron cmd/system-manager cmd/across-manager cmd/assets-cron cmd/assets-manager cmd/currency-manager cmd/iam-cron
修改报告输出格式为文本
veronica report --format=text .
- 解析所有文件/目录之间的依赖关系
- 报告可能影响构建的包
Veronica
取自钢铁侠的同名外太空支援系统,在你需要升级战甲时,只需要通知维罗妮卡,它就会将战甲的模块从外太空发送给你,重新组合后完成升级。
- 分析项目完整的AST,将veronica的粒度控制在源码级别