公開技術情報

[English] [Japanese]

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 が利用されます。