CPAN形式のモジュールを開発するときには ExtUtils::MakeMaker や Module::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をインストールするときに、いっしょにインストールされるべきと思うけどな…