Goパッケージ管理dep

Goのパッケージ管理ツールdepは、Goオフィシャルチームによって作成された依存関係管理ツールです。 github.com

インストール

// go get
go get -u github.com/golang/dep/cmd/dep

// または
brew install dep

コマンド

//  初回のみ実行。現在の構成を解析し`Gopkg.toml`、`Gopkg.lock`を生成する。
dep init
 
// パッケージをvendorディレクトリ以下にインストールする。
dep ensure
 
// パッケージを依存関係に追加しインストールする。
dep ensure -add github.com/foo/bar
 
// パッケージをアップデートする。
dep ensure -update github.com/foo/bar
 
// 現在の状態を出力する。
dep status

Gopkg.toml

# Gopkg.toml example
#
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
# for detailed Gopkg.toml documentation.
#
# required = ["github.com/user/thing/cmd/thing"]
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
#
# [[constraint]]
#   name = "github.com/user/project"
#   version = "1.0.0"
#
# [[constraint]]
#   name = "github.com/user/project2"
#   branch = "dev"
#   source = "github.com/myfork/project2"
#
# [[override]]
#  name = "github.com/x/y"
#  version = "2.4.0"
 
[[constraint]]
  name = "github.com/spf13/cobra"
  revision = "cb731b898346822cc0c225c28550a8a29d93c732"

required

required = ["github.com/user/thing/cmd/thing"]

transitivery dependency(プロジェクトのコードから直接参照されていないが、必要)なパッケージを記述します。

ignored

ignored = ["github.com/user/project/badpkg"]

プロジェクトのソースからの静的解析で無視するパッケージを指定します。既にインストールされているパッケージが更にインストールされるのを抑制できます。

metadata

[metadata]
key1 = "value that convey data to other systems"
system1-data = "value that is used by a system"
system2-data = "value that is used by another system"

depによって使われないデータを設定できます。

constraint

[[constraint]]
  # パッケージの import パスです。
  name = "github.com/user/project"
 
  # version、branch、revisionのいずれかでパッケージを指定できます
  version = "1.0.0"
  branch = "master"
  revision = "cb731b898346822cc0c225c28550a8a29d93c732"
 
  # パッケージの取得先を変更できます。取得先を変更してもimportにはnameのパスを書きます。
  # (vendorディレクトリ以下のパスは変わりません)
  source = "https://github.com/myfork/package.git"
 
  # メタデータは constraint の下にもかけます。
  [metadata]
  key1 = "value that convey data to other systems"
  system1-data = "value that is used by a system"
  system2-data = "value that is used by another system"

direct dependency(プロジェクトのコードから直接されている)依存関係を記載します。

version

[[constraint]]
  name = "github.com/pkg/errors"
  version = "=0.8.0"