go1.11バージョンの前に、言語は、あなたが管理するために行きたいパックのみ達成するために、サードパーティのライブラリに依存することができ、例えばVendor,
GoVendor,
GoDep,
Dep,
Glide
ように、と。
1.ターンGO111MODULE
環境変数 GO111MODULE
モジュールのサポートを有効または無効にするには、それは3つの値があります。off
、、 on
、auto
デフォルトです auto
。
GO111MODULE=off
いいえモジュールのサポート、GOPATHとベンダーのフォルダからパッケージを探しに行くん。GO111MODULE=on
モジュールのサポート、行くだけ基づき、GOPATHとベンダーのフォルダを無視go.mod
依存関係をダウンロードしてください。GO111MODULE=auto
では$GOPATH/src
外とルートディレクトリ持つgo.mod
オープンモジュールがサポートするファイルを。
モジュールを使用する場合、GOPATH
それは無意味であるが、それはまだ依存関係が中に保存されているダウンロードする $GOPATH/src/mod
だろう go install
結果を配置すること $GOPATH/bin
に。
2.モジュールを定義します。
モジュールのルートディレクトリとそのすべてのサブディレクトリのパッケージビルディング・ブロック、のルートディレクトリに存在する go.mod
ファイル、サブディレクトリは、親ディレクトリに向かって移動する、ディレクトリは主に発見された go.mod
ファイルを。
パス・モジュールを導入することなく、他のサブディレクトリプレフィックス導入路において、ルートディレクトリ経路モジュールを指します。
go.mod
最初の行は、その行は、モジュールとみなし、モジュールパスを定義します。
go.mod
ファイルは、次のモジュールの長さを定義するために使用され、現在のバージョン依存性に応じて、また交換に依存する依存関係を除外してもよいです。
モジュールexample.com/のMは (必要 golang.org / X /テキストV0を。3.0 gopkg。で /yaml.v2のV2。1.0 ) (交換 golang.org / X /テキスト=> github.com/golang/textのV0を。3.0 )
ファイルを記述することなく使用することができる go mod init example.com/m
生成するために、 go.mod
最初の行を、ファイルの残りの部分はの実装で心配する必要は go build
、go test
、go list
自動的にコマンド必要依存生成 require
ステートメント。
公式には依存関係がクリーンである保ち、このファイルの定期的なメンテナンスをお勧めします。国内のユーザーのために、手動でこの文書を維持するためにあなたがする必要があるため、避けられない golang.org/x/text
交換してください github.com/golang/text
。
3.関連コマンド
listコマンドを行きます
go list -m
あなたは、現在のバージョンと依存関係を表示することができます
modコマンドを行きます
このサブコマンドを処理するために使用される go.mod
ファイルを。
ローカルキャッシュにダウンロードモジュールダウンロード
ツールやスクリプトから編集編集go.modを
グラフ化、印刷モジュールの要件のグラフは、
INIT現在のディレクトリに新しいモジュールを初期化
欠落している整頓追加し、未使用のモジュールを削除
依存関係のベンダーメイクvendoredコピーを
依存性が期待されている内容を確認する検証
なぜなぜパッケージを説明しますまたはモジュールが必要とされています
コマンドを取りに行きます
依存関係をアップグレードし、ダウングレードのために、特定のバージョンに依存を取得します。自動的に修正することができる go.mod
ファイルは、だけでなく、バージョン番号にも依存するようになることがあります。 go.mod
使用 exclude
ではない、パッケージを除外 go get
ダウン。
前とは違って、それは新しいバージョンがあること go get
の最後に追加することができ @
、シンボル、バージョンを指定するために使用されます。
それは倉庫がしなければならない必要と v1.2.0
として、タグ形式を再生する v1.2
いくつかのゼロは動作しませんとでなければならないセマンティック、として v
接頭辞のバージョン番号。
行くGET github.com/gorilla/ MUX#はタグの最新の一致 GoはGET github.com/gorilla/ 上記と同じ#@ MUX最新の ゴーGET github.com/gorilla/mux@v1を。6.2 #マッチV1。6.2 ゴーGET github.com/gorilla/mux@e3702bed2#マッチV1。6.2 ゴーGET github.com/gorilla/ c85619274f5d MUXの#@のc856192の試合を 行くGETマスターブランチ#と一致github.com/gorilla/mux@master
latest
最新のタグに一致します。
v1.2.6
文言のフルバージョン。
v1
、v1.2
バージョンが最新である場合、プレフィックスと、最新バージョンのマッチング、 1.2.7
彼らは一致します 1.2.7
。
c856192
バージョンハッシュプレフィックス、支店名、中に何の意味的なラベル go.mod
書き込みの規則では使用されません v0.0.0-20180517173623-c85619274f5d
、また、ダミーのバージョンと呼ばれます。
go get
バージョン番号はファジーマッチングすることができますが、 go.mod
文書が唯一のフルバージョンを反映している、つまり v1.2.0
、 v0.0.0-20180517173623-c85619274f5d
除いて、このような長い手書きのバージョンを必要としない、と go get
以上 go mod -require
のフルバージョン番号はファジー・マッチングすることができ、それが書かれたにマッチします go.mod
ファイル。
コマンドを構築して行きます
go build -getmode=vendor
オープンモジュールの場合には、これで私たちは、ベンダーの使用の時代に戻ることができ、サポートしています。
参考: