less-middlewareとtwitter-bootstrap-3.0.0
今回使ってみたのは、
の2つです。 less-middlewareは、express.jsがデフォルトで使用するメタCSS。twitter-bootstrap-3.0.0は、自分でpackage.jsonに書いてインストールしましたよ。
{
"name": "appname",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "3.4.8",
"jade": "*",
"less-middleware": "*",
"twitter-bootstrap-3.0.0": "*",
:
}
}
app.jsでless-middlewareの設定を書く。
twitter-bootstrap-3.0.0がインストールできたらば、app.jsに手を入れます。
いろいろとmiddlewareの登録をしている部分で、
var bootstrapPath = path.join(__dirname, 'node_modules', 'twitter-bootstrap-3.0.0');
app.use(require('less-middleware')({
src: path.join(__dirname, 'assets', 'less'),
paths: [path.join(bootstrapPath, 'less')],
dest: path.join(__dirname, 'public', 'stylesheets'),
prefix: '/stylesheets'
}));
のようにless-middlewareを登録します。この記述は、
- lessのソースは、assets/less配下に置く。
- bootstrapPathの下のlessもlessのコンパイル対象に含める。
- コンパイルして出来たcssファイルは、public/stylesheets配下に置く。
- prefixは、lessのページに"Path which should be stripped from the public pathname."とあるけど、イマイチよくわかっていません。
これで、bootstrapのlessはnpmに任せられるようになります。bootstrapをカスタマイズするには、assets/lessの下の自前lessファイルに書いていけば、カスタマイズできる、と。
2014-03-16追記
less-middlewareのバージョンが上がると、上述のオプションの指定の仕方が変わるそうで。 Migration 0.1.x 0.2.0 · emberfeather/less.js-middleware Wikiに詳しい説明がありますね。0.2.1-betaっていうのが今の時点で使えて、上の指定をするとエラーとなるので、次のように直したら、うまくいった。
var less = require('less-middleware');
var bootstrapPath = path.join(__dirname, 'node_modules', 'twitter-bootstrap-3.0.0');
app.use(less(path.join(__dirname, 'assets', 'less'),
{ dest: path.join(__dirname, 'public'),
preprocess: {
path: function(pathname, req) {
return pathname.replace('/stylesheets', '');
}
}
},
{ paths: [path.join(bootstrapPath, 'less')] }
));
bootstrapのJavascriptはどうすんのさ?
これを楽する方法がまだわかっていませんorz。
node_modules/twitter-bootsrap-3.0.0の中にあるjsファイルをpublic/javascripts配下にコピーして使っているけど、これは今後の課題です。
0 件のコメント:
コメントを投稿