Amon2の自分用Flavorを作る

tokuhiromさん作の軽量WAF Amon2なんですがFlavorという仕組みがあって、特に指定せずamon2-setup.plするとBasicが選択され、BlueprintとjQueryを使ったテンプレートが作成されます。他にデフォルトでついてくるのはMinimumがありますがこれは文字通りなにも使ってないテンプレートが作成されます。

ただ、最近自分が使っているのがinuit.cssやBackbone.jsだったりSpine.jsだったり、underscore.jsだなんだかんだとあってプロジェクトを作成してから追加するのがめんどうくさくなってAmon2書き換えるかとなったときに、Flavorというのがあることに気づいたので作ってみました。すごい簡単です。

Amon2のソースをみればすぐわかるんですがamon2-setup.plをする際にオプションとしてfalvorが渡せるので、そこで自分の好みのテンプレートが作成されるようにできればいいわけです。

amon2-setup.pl --flavor=Ka2u MyProject

で用意しなきゃいけないのは自分のFlavorモジュールと使うCSSやJSのフレームワーク用のAssetモジュールだけです。今回はinuit.cssとSpine.jsを使うテンプレートを作成しました。

Amon2::Setup::Flavor::Ka2u

これが作成されるプロジェクトの元になっていて、ここに作成されるファイル群がすべて記述されています。Amon2::Setup::Flavor::Basicを元にして自分が変更したい部分だけ変更していくといいと思います。

Amon2::Setup::Asset::Spine

Amon2::Setup::Asset::Inuit

Amon2::Setup::Asset::jQueryやA::S::A::BlueprintをみるとAssetの中身はほとんど、使うJSやCSSの中身が文字列としてそのまま帰るような形で作られています。当初同様の形で作成していたんですが、inuit.cssの更新が結構頻繁にあり、モジュールにしたてるのがめんどくさくなってしまい、cssとかJSのファイルをそのまま含んでしまいslurpして吐き出すようにしてしまいました。なんかファイルコピーしてもいいかも。

あとはAmon2::Setup::Flavor::Ka2uのなかでAssetを使ってファイルを作成するように書き換えて、最初に作成されるテンプレートでincludeされるようにすれば作成した段階で自分の好みのプロジェクトがセットアップできます。さらに、毎回書いているような定型的な部分も含んでしまえばもっと楽になりそうです。実際のコードはgithubに置いてあるので詳細はそっちを見てください。

ググッてみるとAmon2::Setup::Flavor::Tengとか作っている人もいるので、みなさんも自分用のFlavor作ってみてはいかがでしょうか。


作ったFlavor
https://github.com/ka2u/Amon2-Setup-Flavor-Ka2u
Amon2::Setup::Flavor::Teng
http://d.hatena.ne.jp/akiym/20110428/p1