簡體   English   中英

如何忽略 go.mod 中的替換指令

[英]How to ignore replace directive in go.mod

我在進行本地開發時使用“替換”語句。 所以我的 go.mod 看起來像這樣:

require (
 gorm.io/gorm v1.21.11
 github.com/mypackages/session v1.1.0
)

replace (
 github.com/mypackages/session => ./../session
)

但是當我git commit我的更改並將代碼部署到生產環境時,我不需要“替換”,所以我需要在每個git commit上注釋這行替換代碼,然后取消注釋。 有沒有辦法忽略生產環境中的“替換”語句?

replace環境中不能被忽略,因為它在依賴解析時間使用,在構建之前,這是在生產中執行之前很久。 但是要回答根本問題,不,您不能“忽略”該指令。 如果它在那里,它就在那里。

雖然@Adrian 是正確的,因為在 Go 中無法實現這一點,但我認為這個問題與 Go 相關,而與 Git 相關。 您可以使用內容過濾器忽略文件的特定部分。 有關更多信息,請參閱此 SO 答案

擁有一個本地版本的 mod 文件(例如 go.local.mod),然后你可以告訴 go 命令使用它:

go build -modfile=go.local.mod main.go

還可以設置環境變量,這樣您就不必每次都輸入它。

您可以編寫一個預提交掛鈎,它將檢測您的 go.mod 文件是否包含替換。

預提交掛鈎代碼 -> https://gist.github.com/MohitVachhani/e331321bb6f8c3e5e26b0cb4ab792c55

請通過此撥打 go,如果您有任何改進,請告訴我!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM