golang-standards/project-layout
golang-standards/project-layout とは Go プロジェクトの基本的なディレクトリ構成を定義したものです。
Go 公式で定義しているものではありません。
リポジトリの解説
ディレクトリの説明はルートの README に記載があります。
README は多数の言語に対応しており、日本語も対応しているようです。
日本語の README:
また、各ディレクトリにも README が存在しており、例が記載されていることもあります。
各ディレクトリについて
/api
OpenAPI 定義などを置くディレクトリ。
/assets
画像などを置くディレクトリ。
/cmd
Go における main 関数を置くディレクトリ。
このディレクトリに置いた main 関数から /internal
や /pkg
にアクセスします。
/configs
設定を管理するディレクトリ。
/deployments
デプロイメント設定を置くディレクトリ。
/docs
設計などドキュメントを置くディレクトリ。
/examples
ライブラリとしてリポジトリを公開した際にライブラリの利用例を置いておくようです。
/githooks
Git のフックを置くディレクトリ。
/init
システム init を置くディレクトリ。
/internal
Go 1.4 から言語仕様上、特別なパッケージなようです。
/pkg
ライブラリコードを置くディレクトリ。
/scripts
スクリプトを置くディレクトリ。
プロジェクトルートに存在する Makefile からこのディレクトリに置いてあるスクリプトを呼び出すことで Makefile をシンプルにすることができます。
/test
テストコードやテストに使用するデータを置くディレクトリ。
/third_party
サードパーティのコードを置くディレクトリ。
/tools
Go プロジェクトをサポートするツールを置くディレクトリ。
/vendor
依存関係を管理するディレクトリ。
go mod vendor
を実行するとこのディレクトリが作成されます。
/web
Web アプリケーションに関するコードを置くディレクトリ。
/website
Web サイトのデータを置くディレクトリ。