[英]How to develop and test a local go module
我有這個腳本:
#!/usr/bin/env bash
set -eo pipefail
cd "$(dirname "$BASH_SOURCE")";
pth_to_make="$GOPATH/src/ores/json-logging"
mkdir -p "$pth_to_make";
rm -rf "$pth_to_make";
ln -sf "$PWD" "$pth_to_make";
但是這個模塊沒有在 go.mod 中聲明為 go 模塊......我正在將不同的依賴項符號鏈接到 repo 中以對其進行測試。
生產中的真正依賴是:
"$GOPATH/src/github.com/oresoftware/json-logging"
測試路徑是:
"$GOPATH/src/ores/json-logging"
現在,我只想刪除本地開發中的真正依賴路徑,問題是它只是刪除了 repo 中的 .git 文件夾,然后我最終不得不再次下載它。
有什么方法可以讓我在真正的 repo/dep 文件夾上進行符號鏈接,但不會丟失 git 的東西嗎? 也許我可以這樣做:
mv "$GOPATH/src/github.com/oresoftware/json-logging" "/tmp/gotemp/json-logging"
# call the script above
# then when I am done:
rm -rf "$GOPATH/src/github.com/oresoftware/json-logging"
mv "/tmp/gotemp/json-logging" "$GOPATH/src/github.com/oresoftware/json-logging" # put it back
這會是最好的前進方式嗎?
因此,為了擴展我的評論,聽起來您所追求的是replace
指令,您可以在此處閱讀更多相關信息。 但我在下面概述了一個簡短的例子;
如果我們想象一下目錄結構:
├── replace-directive
│ ├── go.mod
│ └── replace.go
├── sandbox
│ ├── go.mod
│ └── main.go
replace-directive
是一個帶有go.mod
文件的 go 模塊,其中包含:
module example.com/replacedirective
go 1.14
Sandbox 是我們想要使用這個本地依賴版本而不是從example.com
獲取版本的地方。 所以在我們的沙箱go.mod
文件中,我們有如下的替換指令;
module example/sandbox
require (
example.com/replacedirective v0.0.0 // This would be your reference to your production dependency
)
replace example.com/replacedirective => ../replace-directive // This is your local dependency
go 1.14
所以現在當您在代碼中引用模塊時,它將使用您的本地依賴項。 不需要符號鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.