使用dep ensure -add <package>
添加新的依赖项时,我看到dep
添加了程序包的完整存储库,而不仅仅是我需要的部分。
例如,即使我仅使用AWS Secrets Manager服务,我也添加了aws-sdk-go和dep ensure
将87MB的文件放入了我的供应商文件夹。
答案 0 :(得分:4)
要解决此问题,您需要定义[prune]
设置,这些设置确定哪些文件和目录可以被认为是不必要的,并因此自动从供应商/中删除。
当前有以下选项:
unused-packages
表示应该删除未出现在包导入图中的目录中的文件non-go
修剪Go不使用的文件go-tests
修剪Go测试文件出于谨慎考虑,dep会非强制性地保留可能具有法律意义的文件。
修剪选项默认为禁用。但是,通过Gopkg.toml
生成dep init
会增加行以在根级别启用go-tests
和unused-packages
修剪选项。
[prune]
go-tests = true
unused-packages = true
可以为每个项目定义相同的修剪选项。需要一个附加的名称字段,并且与[[constraint]]
和[[override]]
一样,应为source root,而不仅仅是任何导入路径。
[prune]
non-go = true
[[prune.project]]
name = "github.com/project/name"
go-tests = true
non-go = false
几乎所有项目都可以使用,而无需设置任何特定于项目的规则,并且无需全局启用以下修剪规则:
[prune]
unused-packages = true
go-tests = true
通常也可以安全地设置non-go = true
。但是,由于dep
对于Go文件所扮演的角色只有一个清晰的模型,而非Go文件必然不在该模型范围内,因此没有可比的安全性一般定义。