我可以在 go.mod 以外的其他地方指定替换指令以与其他开发人员共享吗?

Can I specify a replace directive elsewhere other than go.mod for sharing with other developers?

go.modreplace指令是一个本地配置选项,不同的开发者可以在不同的位置拥有本地模块源。

将这个选项包含在一个文件中感觉不对,该文件必须提交给其他人可以使用该模块的 repo(无论是私有的还是 public)。

有没有办法在 go.mod 之外的其他地方指定它?

示例:
https://github.com/Drean64/c64/blob/master/src/go.mod#L5

module github.com/Drean64/c64
go 1.18
replace github.com/Drean64/cpu6502 => ../../cpu6502/src

different developers could have the local module source in different locations.

通过使用相对路径,您可以引用作为主存储库项目子模块的文件夹,这意味着所有开发人员都将受益于相同的本地 replace 指令。

Is there a way to specify this somewhere else than in go.mod?

好像不是,replace directive链接到go.mod,并且:

replace directives only apply in the main module’s go.mod file and are ignored in other modules.

当你想使用本地模块但我更喜欢使用构建标志时,替换指令临时解决方案,下面-modfile很好,你可以在构建或运行程序时使用它。

示例:go run -modfile=local.mod main.go

-modfile file
        in module aware mode, read (and possibly write) an alternate go.mod
        file instead of the one in the module root directory. A file named
        "go.mod" must still be present in order to determine the module root
        directory, but it is not accessed. When -modfile is specified, an
        alternate go.sum file is also used: its path is derived from the
        -modfile flag by trimming the ".mod" extension and appending ".sum".

我只在需要临时解决方案时才使用 replace 指令。