サーチ…
備考
Vendoringは、Goプロジェクトで使用するサードパーティのパッケージをすべて、アプリケーション用に開発したすべての人に一貫性を持たせるための方法です。
Goパッケージが別のパッケージをインポートすると、コンパイラは通常、インポートされたプロジェクトのパスを$GOPATH/src/
チェックします。ただし、パッケージにvendor
という名前のフォルダが含まれている場合、コンパイラはまずそのフォルダをチェックインします。つまり、自分のコードを変更することなく、独自のコードリポジトリ内で他のパーティーのパッケージをインポートすることができます。
VendoringはGo 1.6以降の標準機能です。 Go 1.5では、 GO15VENDOREXPERIMENT=1
という環境変数を設定して、 GO15VENDOREXPERIMENT=1
を有効にする必要があります。
govendorを使用して外部パッケージを追加する
Govendorは、golangのベンダーと互換性のある方法でサードパーティのパッケージをコードリポジトリにインポートするために使用されるツールです。
たとえば、サードパーティのパッケージbosun.org/slog
を使用しているとします。
package main
import "bosun.org/slog"
func main() {
slog.Infof("Hello World")
}
あなたのディレクトリ構造は次のようになります。
$GOPATH/src/
├── github.com/me/helloworld/
| ├── hello.go
├── bosun.org/slog/
| ├── ... (slog files)
しかしクローンを誰かgithub.com/me/helloworld
持っていないかもしれません$GOPATH/src/bosun.org/slog/
彼らのビルドが原因不足しているパッケージに失敗する原因は、フォルダを。
コマンドプロンプトで次のコマンドを実行すると、Goパッケージからすべての外部パッケージを取得し、必要なビットをベンダフォルダにパッケージ化します。
govendor add +e
これはgovendorに、現在のリポジトリにすべての外部パッケージを追加するよう指示します。
アプリケーションのディレクトリ構造は次のようになります。
$GOPATH/src/
├── github.com/me/helloworld/
| ├── vendor/
| | ├── bosun.org/slog/
| | | ├── ... (slog files)
| ├── hello.go
あなたのリポジトリをクローンする人は、必要なサードパーティのパッケージも手に入れます。
ゴミ箱を使って./vendorを管理する
trash
は、 vendor.conf
ファイルで設定する最小限のベンダーツールです。この例はtrash
そのものです:
# package
github.com/rancher/trash
github.com/Sirupsen/logrus v0.10.0
github.com/urfave/cli v1.18.0
github.com/cloudfoundry-incubator/candiedyaml 99c3df8 https://github.com/imikushin/candiedyaml.git
github.com/stretchr/testify v1.1.3
github.com/davecgh/go-spew 5215b55
github.com/pmezard/go-difflib 792786c
golang.org/x/sys a408501
最初の非コメント行は、私たちが管理しているパッケージです./vendor for(注:これは文字どおり、ルートのパッケージだけでなく、あなたのプロジェクトのパッケージでもあります)。
コメント行は#
始まります。
空でない行とコメントでない行のそれぞれは、1つの依存関係をリストします。依存関係の「ルート」パッケージのみがリストされる必要があります。
パッケージ名がバージョン(コミット、タグ、ブランチ)とオプションでパッケージリポジトリURL(デフォルトではパッケージ名から推測される)になった後。
./vendorディレクトリに移入するには、現在のディレクトリにvendor.conf
ファイルを置いて実行するだけです:
$ trash
ごみ箱は~/.trash-cache
(デフォルトで)にコピーし、要求されたバージョンをチェックアウトし、. ~/.trash-cache
./vendor
ディレクトリにファイルをコピーし、 インポートされていないパッケージとテストファイルをプルーニングします 。この最後のステップは、あなたの./vendorをリーンかつ平均的に保ち、プロジェクトレポのスペースを節約します。
注意:v0.2.5ゴミのようLinuxとMacOSのために用意されており、パッケージのみを取得するにはgitのをサポートし、gitのは、最も人気の一つだとして、私たちは、他のすべての追加に取り組んでいるgo get
サポートを。
golang / depを使用する
golang / depは、プロトタイプの依存関係管理ツールです。すぐに、公式のバージョン管理ツールになります。現在のステータスアルファ 。
使用法
ツールを介して取得する
$ go get -u github.com/golang/dep/...
新しいレポの一般的な使用方法は
$ dep init $ dep ensure -update
依存関係を新しいバージョンに更新するには、
$ dep ensure github.com/pkg/errors@^0.8.0
マニフェストファイルとロックファイルの形式が完成したことに注意してください。これらは、ツールが変更されても互換性を維持します。
Govendorツールを使用したvendor.json
# It creates vendor folder and vendor.json inside it
govendor init
# Add dependencies in vendor.json
govendor fetch <dependency>
# Usage on new repository
# fetch depenencies in vendor.json
govendor sync
vendor.jsonの例
{
"comment": "",
"ignore": "test",
"package": [
{
"checksumSHA1": "kBeNcaKk56FguvPSUCEaH6AxpRc=",
"path": "github.com/golang/protobuf/proto",
"revision": "2bba0603135d7d7f5cb73b2125beeda19c09f4ef",
"revisionTime": "2017-03-31T03:19:02Z"
},
{
"checksumSHA1": "1DRAxdlWzS4U0xKN/yQ/fdNN7f0=",
"path": "github.com/syndtr/goleveldb/leveldb/errors",
"revision": "8c81ea47d4c41a385645e133e15510fc6a2a74b4",
"revisionTime": "2017-04-09T01:48:31Z"
}
],
"rootPath": "github.com/sample"
}