Heroku で Go がサポートされたのは良いニュースだったけど godep を使わなきゃいけないのが気に入らないところで、Go で Heroku に乗せたい Web アプリケーションを作る時は Docker を使う ことにした(参考)。その際にも Docker コンテナ中で go get
をいちいち待つのはストレスなのでベンダリングはしておいたほうがよい。そこで簡単なベンダリングスクリプトを書いた。Go 1.5 で試験的に導入されたベンダリングには特に対応していない。
https://gist.github.com/motemen/bb1fca4a92a29bad78dc
このスクリプトは
- プロジェクトの依存しているサードパーティーライブラリを特定のパス以下にコピーできる
- 上記のパスを
GOPATH
に含めてgo
コマンドを実行できる - リビジョンロッキングは行わない
なので、複数人開発には向かないと思う。
使い方は簡単で、プロジェクトのトップで
% go-vendor.sh save
とすれば _vendor/src
以下に(既存の GOPATH
から)ソースコードをコピーして、
% go-vendor.sh go build
として _vendor
を GOPATH
に含めつつ go
コマンドを実行する。ディレクトリ名が _
ではじまっているので ./...
などとしてもソースコードとしては判定されない。
ちなみに依存ライブラリの列挙は go list
で行っており、まさにこれはスイスアーミーナイフですのでおすすめの逸品です。