簡體   English   中英

如何開發和測試本地 go 模塊

[英]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.

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