1

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

例如,我添加了aws-sdk-go并将dep ensure87MB 的文件放入我的供应商文件夹中,即使我只使用 AWS Secrets Manager 服务。

4

1 回答 1

5

要解决此问题,您需要定义[prune]确定哪些文件和目录可以被视为不必要的设置,从而自动从 vendor/ 中删除。

当前可用的选项如下:

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

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

默认情况下禁用修剪选项。但是,生成Gopkg.toml通孔dep init将添加行以在根级别启用go-tests和修剪选项。unused-packages

[prune]
  go-tests = true
  unused-packages = true

可以为每个项目定义相同的修剪选项。需要一个额外的 name 字段,并且与[[constraint]]and一样[[override]],应该是源 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。然而,由于depGo 文件所扮演的角色只有一个明确的模型,而非 Go 文件必然不属于该模型,因此没有可比的安全通用定义。

于 2018-12-04T06:08:02.100 回答