GOPATH / Go Modules
目的
GOPATHのデメリットや、Go Modulesのコマンド周りをあまり理解しておらず、無意識にgo mod tidy
をしていたので、このタイミングを機にGoを基礎から理解しようという試みで記事を書きました。
基礎知識
- GOPATH:外部パッケージなどが保存されるパス
- GOROOT:Goのインストールパス
GOPATHでは何がつらかったのか?
- $GOPATH/src 配下でしか開発ができなかった
- 外部パッケージをリビジョン込みで一元管理するため、プロジェクトごとで異なるリビジョンのパッケージを利用したい際は一手間加える必要がある
Go Modulesの導入
export GO11MODULE=on export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
$ cd ${WORK_DIR} $ go mod init github.com/${GITHUB_ACCOUNT}/{$APP_NAME} # これは慣習っぽい $ go install ${PACKAGE}
Go Modulesでよく使うコマンド一覧
go get
:バイナリのインストール- 利用の有無に関わらず、go.modに追記される(
go mod tidy
で削除可能) - インストールとしての機能は削除されている(
GO11MODULE=off
にすれば可能)
- 利用の有無に関わらず、go.modに追記される(
go install
:バイナリのインストール(バージョン指定可能)go mod tidy
:不要モジュールの削除と新規モジュールの追加