【问题标题】:What does this command do 'GOFLAGS=-mod=mod'?这个命令做什么'GOFLAGS = -mod = mod'?
【发布时间】:2022-02-23 23:16:08
【问题描述】:

我正在尝试制作一个 Taskfile.yml 文件来构建 go 应用程序,但我不太明白在 go build main.go 之前需要“GOFLAGS=-mod=mod”命令。

参考:https://dev.to/aurelievache/learning-go-by-examples-part-3-create-a-cli-app-in-go-1h43

【问题讨论】:

标签: go yaml backend go-cobra go-build


【解决方案1】:

所以这里有两件事

  • GOFLAGS
    • 这不过是一个环境变量(如果您不了解环境变量是什么,请将其视为当前环境中的任何进程都可以访问的值。这些值由操作系统维护)。
    • 因此,这个GOFLAGS 变量有一个空格分隔的标志列表,这些标志将自动传递给相应的 go 命令。
    • 我们这里设置的标志是mod,这个标志适用于go build命令,可能不适用于其他go命令。
    • 如果你好奇go 是如何做到这一点的,refer to this change request
  • 设置-mod=mod 标志在go build 期间实际上做了什么?
    • -mod 标志控制是否可以自动更新 go.mod 以及是否使用供应商目录。
    • -mod=mod 告诉 go 命令忽略供应商目录并自动更新 go.mod,例如,当任何已知模块未提供导入的包时。
    • Refer this

因此

GOFLAGS="-mod=mod" go build main.go

等价于

go build -mod=mod main.go

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 2015-12-28
    • 2021-10-14
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2018-04-19
    • 2020-06-10
    相关资源
    最近更新 更多