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 件のコメント:
コメントを投稿