【问题标题】:How to get dep ensure to remove unused Go files, dependencies or packages如何获得 dep 确保删除未使用的 Go 文件、依赖项或包
【发布时间】:2018-12-04 06:08:02
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    以下选项目前可用:

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

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

    默认情况下禁用修剪选项。但是,通过dep init 生成Gopkg.toml 将添加行以在根级别启用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 文件必然会超出该模型,因此没有可比的安全通用定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多