29. LuneScript を利用するプロジェクトの推奨ディレクトリ構成
LuneScript は lua と go へのトランスコンパイルをサポートします。
一方で、 lua , go は、ディレクトリ管理方法が異なります。
ここでは、どちらの言語のディレクトリ管理においても問題なく使えるようにするための 推奨ディレクトリ構成について説明します。
前提
ここでは以下の github リポジトリで開発することを前提として説明します。
github.com/HOGE/PROJ
- HOGE は、任意の github アカウント名。
- PROJ は、任意のリポジトリ名。
また、以下のモジュールを定義することを前提に説明します。
foo.bar.lib
基本構成
ディレクトリの基本構成を示します。
PROJ/
+-- go.mod
+-- lune.js
+-- foo/
+-- bar/
+-- lib.lns
go.mod, lune.js, foo/ を、 PROJ ディレクトリ直下に配置します。
lune.js
lune.js は、以下の内容で作成します。
{}
go.mod
この時の go.mod の構成を示します。 なお、 go.mod は go へのトランスコンパイルを行なわない場合は不要です。
module github.com/HOGE/PROJ
go 1.16
メインとサブモジュール
リポジトリは、 メイン のプログラムを管理するケースと、 メインのプログラムから利用される サブモジュール を管理するケースがあります。
サブモジュール として管理する場合、 上記の基本構造の制限が若干緩和されます。
具体的には、以下が緩和されます。
- go.mod, lune.js, foo を PROJ 直下に無くても良くなります。
- go.sum の github への 登録が不要 になります。
例えば以下のように src の下に配置することが出来ます。
PROJ/
+-- src/ <--- ※任意のディレクトリ以下に配置可能
+-- go.mod
+-- lune.js
+-- foo/
+-- bar/
+-- lib.lns
この場合、 go.mod は以下のように module のパスが異なります。
module github.com/HOGE/PROJ/src
go 1.16
環境変数 GOPATH
go へトランスコンパイルする場合、 上記 PROJ ディレクトリを次の場所に配置する必要があります。
${GOPATH}/src/github.com/HOGE/PROJ
GOPATH を設定していない場合は ${HOME}/go
が利用されます。