koba::blog

小林聡: プログラマです

Minillaを使ってモジュールのひな形を作る

CPAN形式のモジュールを開発するときには ExtUtils::MakeMakerModule::Build が定番なのだが、最近は Minilla が流行らしいので試してみた。

お試し結果はこちら。

Minillaのインストール

$ cpanm -S Minilla

コマンド minil がインストールされる。

モジュールのひな形を作る

minil new で新しいモジュールのひな形を作る。モジュール名は Foo-Bar とした :)

$ minil new Foo-Bar

以下のディレクトリとファイルが作成される。

Foo-Bar/
    .git/
    .gitignore
    .travis.yml
    Build.PL
    Changes
    LICENSE
    META.json
    README.md
    cpanfile
    lib/
        Foo/
            Bar.pm
    minil.toml
    t/
        00_compile.t

Minilla は Git の使用を前提としているので、すでに git init と git add が実行されている。ユーザ名とメールアドレスは ~/.gitconfig から取得されるが、GitHub を使っているのであれば正しく設定済みのはず。

生成されたファイルの内容は以下の通り。

.travis.yml
Travis CI 用の設定ファイル。とりあえずは修正しない。
Build.PL
Minilla により自動生成されるので修正するなとのこと。
Changes
{{$NEXT}} 以下に当リリースでの修正点を書く。
LICENSE
Perl5のライセンスと同じ(GPL および Artistic License)。これ以外のライセンスを使用したい場合は、minil.toml を修正するもよう。
META.json
Minilla により自動生成されるので修正しない。
README.md
Minilla によりメインのモジュールのPODから自動生成されるので修正しない。
cpanfile
使用しているモジュールを追記する。
lib/Foo/Bar.pm
最低限のパッケージ定義とPODのひな形が生成されている。
minil.toml
Minilla用の設定ファイル。必要に応じて修正する。
t/00_compile.t
Test::More を使ってモジュールのロードだけテストするコードが生成されている。

初期状態を commit しておく。

$ cd Foo-Bar/
$ git commit -m 'initial commit'

モジュールの修正とテスト

Foo::Bar に関数を追加し、それをテストするコードを 01_hello.t に書く。

修正したらテスト。Minilla は Git の管理対象となっているテストしか実行しないので、先に git add する必要がある。

$ git add t/01_hello.t
$ minil test

問題なければ、commit する。

$ git add lib/Foo/Bar.pm t/01_hello.t
$ git commit

GitHub に push する

GitHub をリモート・リポジトリにし、変更を push するようにする。

まず、GitHub にログインし、Foo-Bar という空のリポジトリを作る。このとき README, .gitignore, license は作成しないこと。

リポジト作成が完了すると既存リポジトリを push する方法が示されるので、これに従う。

$ git remote add origin https://github.com/kobalab/Foo-Bar.git
$ git push -u origin master

モジュールをリリースする

CPANに登録するわけではないので、minil.toml に以下の設定を追加する。

[release]
do_not_upload_to_cpan=true

minil release は Version::Next, CPAN::Uploader を使うようなので、インストールする。*1

$ cpanm -S Version::Next
$ cpanm -S CPAN::Uploader

Changes の {{$NEXT}} の下に今回のリリースの要点を追記してから以下のコマンドを実行する。

$ minil release

GitHub にリリースが追加されたので、GitHub からインストールできるか試してみる。

$ cpanm --test-only https://github.com/kobalab/Foo-Bar/archive/v0.6.tar.gz

とりあえずうまく行ったもよう。

*1:Minillaをインストールするときに、いっしょにインストールされるべきと思うけどな…