今日はOkayama.rbだったので久々にRubyっぽいことをやりました。
というか昨日の夜から作業してたやつの続きをしただけですが。
先日、有志でやってる読書会の教材としてどの本にしようか?という話をしていたのですが、それはUnity系にしようということに決まったのですが、個人的にはTypeScript気になるなぁと思っていたのです。
しかし、Railsに慣れてる人がTypeScriptをやろうと思うと結構めんどい。
RailsでTypeScriptをやるのは茨の道らしいというのはぐぐったらわかっていたのですが、最近typescript-railsというgemが更新されだしたらしいではないですか。といっても、Railsで新しいプロジェクトを作るんならいいけれど、簡単にTypeScriptを試したい人にとってはちょっと敷居が高いかなと思ったので、middlemanでTypeScriptを使えるようにしよう!と思った訳です。
typescript-railsが、typescript-nodeというgemを使っていたので、これを使うようにして、middlemanの拡張を作り始めました。middlemanのソースを読んだのですが、なかなかうまくいかず、最終的にはmiddleman-livereloadのソースを読んで、必要なところだけ抽出してmiddleman-typescriptを作りました。テストは(まだ)書いていません。バージョン0.0.1だから許して…。
github: okayamarb/middleman-typescript
使い方
まず、middlemanプロジェクトのGemfileに追記してください。
gem 'middleman-typescript'
そしてbundle installします。
そして、config.rbに以下を書きます。
configure :development do
ignore "source/typescripts/*"
activate :livereload
activate :typescript # デフォルトはtypescripts。オプションで typescript_dir: 'ts' で変更可能
end
そして、sourceディレクトリ以下にデフォルトならtypescriptsディレクトリを作ります。ここにtypespcriptファイル(*.ts)を置きます。あとはmiddleman sでサーバが起動している状態でtsファイルを作ると、js_dirに*.tsファイルから*.jsファイルがコンパイルされます。
ignore “source/typescripts/*”
としておくことで、middlemanのLiveReloadからtypescriptディレクトリを除外します。middleman-typescriptがsource/typescripts/*を監視しているので、LiveReloadで見る事はありません。というのも、middleman-typescriptがtsファイルからjsファイルを作ったタイミングでmiddleman-livereloadによってリロードされますから、除外しておかないとリロードしまくっておかしくなるのです。
ただ、jsファイルを実際に作るので、middlemanがデフォルトでサポートしているCoffeeScriptのようにはなりません。
これで自分的にもTypeScriptを勉強する環境が整ったはず!