govendor は、vendor
メカニズムに基づく Go パッケージの依存関係管理コマンド ライン ツールです。ネイティブ ベンダーとの非侵入的な統合、および他の依存関係管理ツールからの移行もサポートしており、異なるプロジェクトでの同じパッケージの異なるバージョンの開発と管理を、相互侵入することなく簡単に実現できます。
当初、Go はこれより適切なパッケージ管理ツールを提供していませんでした。ベンダー機能はバージョン 1.5 から提供されていますが、環境変数 GO15VENDOREXPERIMENT=1
を手動で設定する必要があります。
go build
または go run
コマンドを実行すると、パッケージは次の順序で検索されます。
バージョン 1.6 がリリースされたとき、この環境変数の値はデフォルトで 1 に設定されていました。この値は、go env
コマンドを使用して表示できます。
バージョン 1.7 がリリースされたとき、この環境変数は削除され、vendor
機能がデフォルトで有効になりました。
main
を含まない package
) は、外部ファイルを独自のバージョンで保存しないでください。 control 特別な理由がなく、これを行う理由がわかっている場合を除き、パッケージは vendor
ディレクトリにあります。 アプリケーション (main
を含む package
) では、vendor
ディレクトリを 1 つだけ存在することをお勧めします。コードベースレベルのディレクトリにあります。
関連チュートリアル: go ビデオ チュートリアル
govendor は、vendor## に基づくディレクトリです。 # メカニカルパッケージ管理ツール。
からプロジェクトの
vendor ディレクトリへのコピーをサポートします
を使用します。これは、PHP の
Composer
コマンドは、
$GOPATH
ファイルが無視される場合は、
govendor を使用できます。 sync は依存関係を復元します。 パッケージ
は依存パッケージを追加または更新します。
は他のパッケージから使用できます。
vendor パッケージ管理ツール
govendor へのワンクリック移行
directory
go get -u github.com/kardianos/govendor
を PATH に $GOPATH/bin
を追加することをお勧めします。 Linux/macOS の設定は次のとおりです。 <pre class="brush:php;toolbar:false;">export PATH="$GOPATH/bin:$PATH"</pre>
Initialization
Initialization のプロジェクト ルート ディレクトリで次のコマンドを実行します。プロジェクトのルート ディレクトリ、つまり vendor
ディレクトリと
ファイルが自動的に生成されます。この時点で、vendor.json
ファイルの内容は次のとおりです。 <pre class="brush:php;toolbar:false;">govendor init</pre>
Common Commands
<pre class="brush:php;toolbar:false;">{
"comment": "",
"ignore": "test",
"package": [],
"rootPath": "govendor-example"
}</pre>
指定されたパッケージのみを
$GOPATHgovendor add +external## からコピーします
govendor add gopkg.in/yaml.v2
govendor list
e github.com/gin-contrib/sse e github.com/gin-gonic/gin e github.com/gin-gonic/gin/binding e github.com/gin-gonic/gin/internal/json e github.com/gin-gonic/gin/render e github.com/golang/protobuf/proto e github.com/mattn/go-isatty e github.com/ugorji/go/codec e gopkg.in/go-playground/validator.v8 e gopkg.in/yaml.v2 pl govendor-example m github.com/json-iterator/go m golang.org/x/sys/unix
govendor list -v fmt
s fmt ├── e github.com/gin-contrib/sse ├── e github.com/gin-gonic/gin ├── e github.com/gin-gonic/gin/render ├── e github.com/golang/protobuf/proto ├── e github.com/ugorji/go/codec ├── e gopkg.in/go-playground/validator.v8 ├── e gopkg.in/yaml.v2 └── pl govendor-example
<pre class="brush:php;toolbar:false;">govendor fetch golang.org/x/net/context</pre>
govendor fetch golang.org/x/net/context@a4bbce9fcae005b22ae5443f6af064d80a6f5a55 govendor fetch golang.org/x/net/context@v1 # Get latest v1.*.* tag or branch. govendor fetch golang.org/x/net/context@=v1 # Get the tag or branch named "v1".
<pre class="brush:php;toolbar:false;">govendor fmt +local</pre>
govendor install +local
govendor test +local
ディレクトリにプルします (
$GOPATHgovendor install +vendor,^program
パッケージはすでに
vendor ディレクトリにありますが、
$GOPATHgovendor fetch +out
$GOPATH
ここで、変更されてコミットされていないパッケージを vendor
govendor update +vendor
govendor update -uncommitted <updated-package-import-path>
を参照すると、
normalvendor.json は、依存関係パッケージの情報、更新を取得する方法を記録します
<pre class="brush:php;toolbar:false;">govendor fetch github.com/normal/pkg::github.com/myfork/pkg</pre>
govendor サブコマンド
を使用するか、
github.com/kardianos/govendor/context子指令 | 功能 |
---|---|
#init | ## 建立 vendor 目錄和 vendor.json 檔案
|
列出&過濾依賴包及其狀態 | |
從 | $GOPATH 複製套件到專案 vendor 目錄
|
#從 | $GOPATH 更新依賴套件到專案vendor 目錄
|
從 | vendor 目錄移除依賴的套件
|
列出所有缺失、過期和修改過的套件 | ## fetch |
vendor | 目錄(不會儲存到$GOPATH)
| sync
vendor.json | 拉取相符的套件到vendor 目錄 ##migrate |
實作的套件管理工具中一鍵遷移 |
#get |
類似,將套件下載到 | $GOPATH,再將依賴套件複製到vendor 目錄
license |
shell | |
指令 |
| govendor 狀態參數
意義 | ||
---|---|---|
local | ||
本地包,即專案內部所寫的套件 | external e 外部包,即在 | GOPATH|
目錄 | ## vendor | ##v
|
#已在 | vendor | 目錄下的套件
| std
標準庫裡的套件 | excluded | |
#明確被排除的外部套件 | unused | |
#未使用的套件,即在 | vendor 目錄下,但專案中並未引用到 |
missing |
被引用了但卻找不到的套件 | p |
outside
#相當於狀態為
external missing
以上がGo パッケージの依存関係管理ツールである govendor についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。