序文
ベンダーの管理ツールは、管理のと同じレベルをDEPにもかかわらず、独自のベンダー、通常は台無しを持つことができ、各追加の依存、1.5行くベンダー管理プロジェクトの依存関係を導入しましたが、GOPATHの下ベンダのストレージ・パスで、しかし、比較的GOPATHパスを逃れることはできません。また、各パケットのバージョン管理も原始的な表示され、さらにいくつかの開発は、下GOPATHにベンダーを自分自身をダウンGitHubのから直接、パッケージのダウンロードに依存します。行くの依存関係の管理は、開発者が批判一貫痛いポイントです。だから、待望のでは、1.11が最終的にパッケージの依存関係は、モジュールのプロジェクト管理を行って導入、プロジェクト管理パッケージGOPATHへの依存に加えて、バージョン管理の依存関係を定義して行きます。
定義
モジュールは、収集部は、関連パッケージのバージョン情報を行くです。正確な記録は、情報や再コンパイル依存関係に依存する必要があります。
開始からの例
モジュールは、実際には非常に使いやすいです行く使用し、ここで私が説明するための例を提供します。
環境情報の例としては、行きます:
$バージョンを行きます
バージョンgo1.12.4ダーウィン/ AMD64を行きます
次の例では、依存しているログのgithub.com/sirupsen/logrus出力ライン。GOPATHのMyTestに外のディレクトリを作成し、次のように、main.goファイルを作成します。
メインパッケージ (インポート ログ「github.com/sirupsen/logrusを」 ) FUNCメイン(){ // ファイル名と行番号を記録するために、この行を追加します! log.SetReportCaller(真) log.Println(" Hello Worldの" ) }
実行
MODのinitのMyTestを行きます
実際に、私はそれ以外の場合はエラーになり、モジュール名を任意の名前にすることができますが、指定する必要があり、指定されMYTEST 行く:のためのモジュールパスを決定することはできませんソースディレクトリを。
その後、ビルドが正常にコンパイルされ、より多くのファイルgo.modを実行し、二つの関連モジュールをgo.sumます行きます。
$ lsが 行くgo.mod。合計は、 MyTestにmain.go の$ 猫go.modの MyTestというモジュール に行く1.12は github.com必要 / sirupsen / logrus V1を。4.2 $の猫が行きます。合計 github.com / davecgh / V1を行く、吐き出します。1.1 /go.mod H1:J7Y8YcW2NihsgmVo / mv3lAwl / skON4iLHjSsI + c5H38 = github.com / konsorten /行く-Windowsのターミナル・シーケンスv1の。0.1 /go.mod H1:T0 + 1ngSBFLxvqU3pZ + M / 2kptfBszLMUkC4ZK / EGS / CQ = github.com / pmezard /ゴーdifflibのV1。0.0 /go.mod H1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ / 4 = github.com / sirupsen / logrus V1。4.2 H1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5 + UNI2im4 = github.com / sirupsen / logrus V1。4.2 /go.mod H1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE = github.com / stretchr / objx V0。1.1 /go.mod H1:HFkY916IF + rwdDfMAkV7OtwuqBVzrE8GR6GFx + wExME = github.com / stretchr / V1を証言。2.2 /go.mod H1:a8OnRcib4nhh0OaRAV + Yts87kKdq0PP7pXfy6kDkUVs = golang.org / X / SYSのV0。0.0 - 20190422165155 -953cdadca894 H1:Cz4ceDQGXuKRnVBDTS23GTn / pU5OE2C0WrNTOYK1Uuc = golang.org / X / SYSのV0。、0.0 - 20190422165155-953cdadca894 / go.mod H1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs =
例からわかるようにgo.modプロジェクトファイルには、チェック情報内に格納されたパッケージの依存関係情報go.sumの依存関係に格納されます。情報go.modの主な焦点。我々は指定しない場合は、私たちは依存パッケージの最新バージョンを引っ張ってのデフォルトの意志を構築して行く、バージョン情報の依存関係を確認することができます。
次のステップに分けて、外出先モジュールを使用して、結論付けることができます。
- MODのinit $ moduleNameの初期化モジュール情報を行きます。
- 構築したり、そのようなコマンドの依存関係などの試験規格が自動的に情報工学を更新して行く行きます。
- 行くGET $のpackageName @ $バージョンを使用する必要がある場合は、例えば、FOOの@マスターを取りに行く、[email protected]を取りに行く、FOOする@ e3702bed2を取りに行く、また直接変更またはMOD編集を行ってgo.mod使用することができます(後の記事意志特定のバージョンの依存関係を取得するために)言及しました。
これらは、基本的なゴーモジュールのワークフローは、日常業務プロセスの要件を満たすために持っている、以下の詳細を他の利用ゴーモジュールを説明します。
詳細な利用状況
だから、それを果たしているどのように多くのゲームの合計をモジュールに行きますか?modは答えを持っています行く直接実行します。
$ MOD行く 行くmodはモジュール上の操作へのアクセスを提供します。 そのサポート注意ため、モジュールはすべてのゴーコマンドに内蔵されている だけではない「MOD行きます」。例えば、日対日は、追加、削除、アップグレード、 および依存関係の格下げをしなければならない行って使用して「取りに行きます」。 参照してください「ヘルプモジュールを行く」 ためのモジュールの機能の概要。 使用法: 行きMOD <コマンド> [引数] コマンドは次のとおりです。 ローカルキャッシュにダウンロードモジュールをダウンロード ツールやスクリプトから編集編集go.mod グラフの印刷モジュールの要件グラフ initは新しいモジュールを初期化するには、現在のディレクトリ 整頓アドオンが存在しないと、未使用のモジュールを削除 ベンダー のmake 依存関係のvendoredコピーを 依存関係を検証し確認するには、コンテンツが期待している パッケージやモジュールが必要とされている理由理由を説明 使用を「MOD助けに行く<コマンド> 」 のための より多くのコマンドに関する情報。
私はすでに言及したそれらの初期化前には、それはここでは繰り返しません。
ダウンロード
キャッシュディレクトリに依存関係をダウンロードしてください。
編集します
編集されたバージョンは、このようなMOD編集-fmtのgo.modがgo.modをフォーマットします行くように、コマンドの機能を提供go.mod。
用法行くMOD編集[フラグ] [go.mod]
これはフラグオプションは次のとおりです。
- -fmtファイル形式go.mod
- -require = $パッケージ:依存関係を追加@version、それが既に存在する同じ依存性をカバーします。編集だけがgo.modを指定したファイルを更新し、ファイルを更新しますので、go.modの取りに行く、取りに行く以上を推奨頼る追加。
- -droprequire = $パッケージ:依存関係を削除@version
- -replace = $ oldPackage = $ newPackage更新を頼る既に存在しています。コードカバレッジは、通常、民間倉庫の総倉庫に使用されます。
ここでは、多くの場合、生産において直面する状況は、このためですので、私は、その-replaceオプションに焦点を当て、我々はサードパーティのオープンソースライブラリを変更するには、民間の倉庫をフォークする必要があること、例えば、そこにある小さな弟は2 logrusを作りました開発github.com/gogap/logrus、あなたは次のように置き換えgithub.com/gogap/logrus前github.com/sirupsen/logrusサードパーティのオープンソースライブラリを使用する必要があり、この時間:
$ MOD編集-replace =行く" github.com/sirupsen/logrus=github.com/gogap/[email protected]を" $構築行く 見つけgithub.com:GO / gogap / logrus V0を。8.2 GO:github.comダウンロード / gogap / logrus V0。8.2 GO:github.com抽出 / gogap / logrus V0。8.2 $ 猫go.modの MyTestというモジュール 行く1.12は github.com必要 / sirupsen / logrus V1を。4.2 github.com置き換える / sirupsen / logrus => github.com/gogap/logrusのV0を。8.2
グラフ
表示依存性(図)。
$ MODグラフ行く のMyTest github.com / sirupsen / logrus @ V1。4.2 github.com / sirupsen / logrus V1 @。4.2 github.com/davecgh/go-spew@v1。1.1 github.com / sirupsen / logrus V1 @。4.2 github.com/konsorten/go-windows-terminal-sequences@v1。0.1 github.com / sirupsen / logrus V1 @。4.2 github.com/pmezard/go-difflib@v1。0.0 github.com / sirupsen / logrus V1 @。4.2 github.com/stretchr/objx@v0。1.1 github.com / sirupsen / logrus V1 @。4.2 github.com/stretchr/testify@v1。2.2 github.com / sirupsen / logrus V1 @。4.2 golang.org/x/sys@v0。、0.0 - 20190422165155 -953cdadca894
整頓
欠落したパケットを高め、パッケージの削除には依存しません。依存関係を自動的にダウンロードし、次の$ GOPATH / PKG / MODディレクトリをキャッシュします。
きちんとしたパッケージは、自動的にバージョン依存を更新し、それがプロジェクトの初めに建て以下整頓使用しようとされていない場合は、新しい依存関係を正確に制御する取りに行くしようと、注意すべきです。
ベンダー
依存関係は、ディレクトリの下に、ベンダーにコピーされます。彼はきっと、あなたが疑問を持っている必要がありますので、多くの前で言った:あなたは、私がネットワーク(アクセスできないgithubの)外機をコンパイルしなかった場合の対処方法については、依存関係を引っ張っする必要があるときに、サイトを構築して行きますか?ベンダーは、次にプッシュ(ネットワーク外)ローカル開発マシン上-mod =ベンダーを構築行く実行するマシンコードをコンパイルし、実行が底にコピーベンダーの依存関係にMODベンダーに行く、そのようなケースを使用することです。例:
$ MODベンダー行く の$ lsと 行くgo.mod。合計 main.goのMyTestベンダー $構築行く -mod =ベンダーに
検証します
依存関係をチェック
$モッズ確認しに行く
すべてのモジュールが検証
なぜ
なぜ依存関係を指摘しています。グラフ、依存関係の理由だけで特定の解釈の違いがあり、グラフは、完全な依存関係グラフを与えています。
$ MOD行く理由github.com/konsorten/go-windows-terminal- シーケンス #github.com / konsorten /ゴー窓-terminal- 系列 のMyTest github.com / sirupsen / logrus github.com / konsorten /ゴー窓末端-sequences
概要
印刷ログの例を通じて、基本的な日常の使用で包括的な使用状況のプレゼンテーションを含むすべて行くのモジュールを使用することを、示しています。アップデートが推奨され、新たな依存関係を取りに行きます。依存関係の交換は、MOD編集-replaceを行くことをお勧めします。限られた時間は、マシンのネットワークをコンパイルするベンダー・ソリューションを提供しています。
参照
https://github.com/golang/go/wiki/Modules