如何让 dep ensure 删除未使用的 Go 文件、依赖项或包
How to get dep ensure to remove unused Go files, dependencies or packages
当使用 dep ensure -add <package>
添加新的依赖项时,我看到 dep
添加了包的完整存储库,而不仅仅是我需要的部分。
例如,我添加了 aws-sdk-go 并且 dep ensure
将 87MB 的文件放入我的 vendors 文件夹中,即使我只使用 AWS Secrets Manager 服务。
要解决此问题,您需要定义 [prune]
设置,确定哪些文件和目录可以被视为不需要,从而自动从 vendor/ 中删除。
以下选项当前可用:
unused-packages
表示应该删除未出现在包导入图中的目录中的文件
non-go
删除 Go 不使用的文件
go-tests
修剪 Go 测试文件
出于谨慎考虑,dep 不会选择性地保留可能具有法律意义的文件。
默认情况下禁用修剪选项。但是,通过 dep init
生成 Gopkg.toml
将添加行以在根级别启用 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文件必然落在该模型之外,因此无法对安全性做出可比的通用定义。
当使用 dep ensure -add <package>
添加新的依赖项时,我看到 dep
添加了包的完整存储库,而不仅仅是我需要的部分。
例如,我添加了 aws-sdk-go 并且 dep ensure
将 87MB 的文件放入我的 vendors 文件夹中,即使我只使用 AWS Secrets Manager 服务。
要解决此问题,您需要定义 [prune]
设置,确定哪些文件和目录可以被视为不需要,从而自动从 vendor/ 中删除。
以下选项当前可用:
unused-packages
表示应该删除未出现在包导入图中的目录中的文件non-go
删除 Go 不使用的文件go-tests
修剪 Go 测试文件
出于谨慎考虑,dep 不会选择性地保留可能具有法律意义的文件。
默认情况下禁用修剪选项。但是,通过 dep init
生成 Gopkg.toml
将添加行以在根级别启用 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文件必然落在该模型之外,因此无法对安全性做出可比的通用定义。