如何获取Dep确保删除未使用的Go文件,依赖项或软件包

时间:2018-12-04 06:08:02

标签: go package dependency-management aws-sdk-go godeps

使用dep ensure -add <package>添加新的依赖项时,我看到dep添加了程序包的完整存储库,而不仅仅是我需要的部分。

例如,即使我仅使用AWS Secrets Manager服务,我也添加了aws-sdk-godep ensure将87MB的文件放入了我的供应商文件夹。

1 个答案:

答案 0 :(得分:4)

要解决此问题,您需要定义[prune]设置,这些设置确定哪些文件和目录可以被认为是不必要的,并因此自动从供应商/中删除。

当前有以下选项:

  • unused-packages表示应该删除未出现在包导入图中的目录中的文件
  • non-go修剪Go不使用的文件
  • go-tests修剪Go测试文件

出于谨慎考虑,dep会非强制性地保留可能具有法律意义的文件。

修剪选项默认为禁用。但是,通过Gopkg.toml生成dep init会增加行以在根级别启用go-testsunused-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文件必然不在该模型范围内,因此没有可比的安全性一般定义。