nodeで、というかexpressで、より正確にはconnectで、Railsのアセットパイプラインのようなことをする方法についてです。
意外と知られてないようなのですが、 connect-assets というモジュールがあります。
npm install connect-assets
でインストールできます。 Railsに慣れている人はいいのかもしれませんが、ちょっとexpressっぽくないというかconventionがあって戸惑うかもしれません。 個人的にはわかりにくいと思いました。 connect-cachifyの方がAPIとしては分かりやすい気がします。
さて、簡単な使い方です。expressには慣れているものとします。
var assets = require('connect-assets');
...
app.use(assets());
このオプション無しデフォルトだと、assetsディレクトリにjsファイルやcssファイルを置くことになります。さらに、jadeファイルに
!= css('hoge')
!= js('hoge')
と書いておくと、それぞれ、assets/hoge.cssとassets/hoge.jsが読み込まれることになります。
一応これだけなのですが、concatenationは直接はサポートされていなくて、lessのimport機能やjsの snoketsを使う必要があります。ここがややこしい。
具体的には、assets/hoge.lessに
@import 'foo.css';
@import 'bar.less';
のように書いたり、assets/hoge.jsに
//= require foo.js
のように書いたりするようです。統一感ないですね。
NODE_ENV=productionの時はminifyしてくれます。これは便利。
現状不満があるconnect-assetsですが、v3 branchの開発が進められているようです。クリーンに書き直したり、依存ライブラリを減らす計画のようですので、期待できそうです。
コメント