サーチ…


備考

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"

}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow