这个命令有什么作用'GOFLAGS=-mod=mod'?
What does this command do 'GOFLAGS=-mod=mod'?
我正在尝试制作一个 Taskfile.yml 文件来构建 go 应用程序,但我不太明白之前“GOFLAGS=-mod=mod”命令的必要性去建造 main.go.
参考:https://dev.to/aurelievache/learning-go-by-examples-part-3-create-a-cli-app-in-go-1h43
所以这里有两件事
GOFLAGS
- 这不过是一个环境变量(如果你不明白什么是环境变量,可以把它想象成一个可以被你当前环境中的任何进程访问的值。这些值由 OS).
- 所以这个
GOFLAGS
变量有一个 space 分隔的标志列表,这些标志将自动传递给适当的 go 命令。
- 我们这里设置的flag是
mod
,这个flag适用于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
我正在尝试制作一个 Taskfile.yml 文件来构建 go 应用程序,但我不太明白之前“GOFLAGS=-mod=mod”命令的必要性去建造 main.go.
参考:https://dev.to/aurelievache/learning-go-by-examples-part-3-create-a-cli-app-in-go-1h43
所以这里有两件事
GOFLAGS
- 这不过是一个环境变量(如果你不明白什么是环境变量,可以把它想象成一个可以被你当前环境中的任何进程访问的值。这些值由 OS).
- 所以这个
GOFLAGS
变量有一个 space 分隔的标志列表,这些标志将自动传递给适当的 go 命令。 - 我们这里设置的flag是
mod
,这个flag适用于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