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

Nic*_*las 1 package go dependency-management godeps aws-sdk-go

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

比如我加AWS-SDK-去dep ensure文件放87MB到我的文件夹的供应商,即使我只使用AWS秘密Manager服务。

Nic*_*las 5

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

当前提供以下选项:

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

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

默认情况下,修剪选项是禁用的。但是,生成过Gopkg.tomldep init将在根级别添加行以启用go-testsunused-packages修剪选项。

[prune]
  go-tests = true
  unused-packages = true
Run Code Online (Sandbox Code Playgroud)

可以为每个项目定义相同的修剪选项。需要一个附加的名称字段,并且与[[constraint]]和一样[[override]],应该是源根目录,而不仅仅是任何导入路径。

[prune]
  non-go = true

  [[prune.project]]
    name = "github.com/project/name"
    go-tests = true
    non-go = false
Run Code Online (Sandbox Code Playgroud)

几乎所有项目都可以,而无需设置任何特定于项目的规则,并且无需全局启用以下修剪规则:

[prune]
  unused-packages = true
  go-tests = true
Run Code Online (Sandbox Code Playgroud)

通常也可以安全设置non-go = true。但是,由于dep只有一个明确的模型来确定Go文件所扮演的角色,并且非Go文件必然不在该模型之内,因此没有可比的安全性一般定义。