Gruntから移行する人も最近増えて来た gulp です。ただ、Coffee好きからすると残念なのが、gulpfileをCoffeeScriptで書いても、そのままだと認識されないこと。この記事では、それをなんとかする方法をまとめます。
追記: 次期バージョン gulp 3.7 では、デフォルトでAltJSが使えるようになるので、下のような苦労は不要になるらしいです
1. 正攻法: コマンドオプション
gulpfileはJavaScriptで書くのが標準ですが、オプションをつけることでgulpfile.coffeeを直接ロードすることが可能です。
$ gulp --require coffee-script/register
2. JavaScript からインクルード
毎回オプションを付けるのが面倒という場合、
- gulpfile.coffee
- gulpfile.js
のふたつを用意して、.jsから.coffeeをインクルードする方法があります。(個人的にはなんかイヤ)
require('coffee-script/register');
require('./gulpfile.coffee');
3. エイリアスを設定
もうひとつの方法が、エイリアスを設定しておくというもの。Mac OS Xの標準のシェルであれば、次のコマンドで設定可能です。
$ echo "alias gulp='gulp --require coffee-script/register'" >> ~/.profile
個人で使うには、この方法が一番キレイですが、プロジェクトを人と共有する際に、説明がちょっと面倒なのが玉に瑕。
4. CoffeeGulp
最後の方法は、コマンドのラッパーを作ってしまおうというもので、gulp
コマンドの代わりに、coffeegulp
コマンドを使います。
$ coffeegulp
これを使えるようにするには、
$ sudo npm install coffeegulp -g
としておく必要があります。手間的には、エイリアスと同じくらいでしょうか...。
まとめ
以上、4つの方法を紹介しました。
方法 | コマンド | デメリット |
---|---|---|
1. コマンドオプション | gulp --require coffee-script/register |
コマンドが長い |
2. jsからインクルード | gulp |
常にjsとcoffeeの2つがいる |
3. エイリアス | gulp |
非標準な方法 |
4. CoffeeGulp | coffeegulp |
非標準な方法 |
個人的には、次の方針をとっていますが、それぞれのお好みでどうぞ〜。
- 対外的には: コマンドオプションによる方式で説明
- 個人の環境では: エイリアスを設定
希望としては、gulpのコミッターが心変わりをして、CoffeeScriptにサービスしてくれることを期待しています。こちらのディスカッションの風向きだと難しそうですが、ユーザが増えてくるに従って、また議論が再燃する可能性もなきにしもあらず。