2012 年 3 月 5 日更新: Bootstrap 担当者は、この問題を Bootstrap のバージョン 2.0.2 (まだリリースされていません) で修正しました。このコミットを参照してください。
根本的なバグは、less.js の現在のバージョンでは、変数を url() 値に直接使用できないことです (例: url(@iconWhiteSpritePath)
)。代わりに、文字列補間 (例: url("@{iconWhiteSpritePath}")
) を使用する必要があります。これにより、同じことが実現します。 . ブートストラップ担当者は、この癖を考慮して構文を更新しました。
元の回答
今日、正確な問題に遭遇し、その原因を突き止めました。あなたのスタックは私のものよりもいくつか前のバージョンなので (私は Bootstrap 2.0 と less.js 1.2.2 を使用しています)、同じ問題であるかどうかはわかりませんが、関連している可能性があります。
とにかく、私にとっての問題は、Twitter Bootstrap がいくつかの変数を定義していることでした。
@iconSpritePath: "../img/glyphicons-halflings.png";
@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
そして、それらを sprites.less の background-image の url() 値で直接使用します。
[class^="icon-"],
[class*=" icon-"] {
display: inline-block;
width: 14px;
height: 14px;
line-height: 14px;
vertical-align: text-top;
background-image: url(@iconSpritePath);
background-position: 14px 14px;
background-repeat: no-repeat;
.ie7-restore-right-whitespace();
}
.icon-white {
background-image: url(@iconWhiteSpritePath);
}
大きな問題を引き起こしているこの Github issueの議論に従って。less.js がこの値でチョークすると、コンパイル全体が失敗します。
良いニュースは、csnover によって提供された、その問題の修正があることです。tree.URL の次の行を変更するだけです。
if (typeof(window) !== 'undefined' && !/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(val.value) && paths.length > 0) {
に
if (typeof(window) !== 'undefined' && typeof(val.value) !== 'undefined' && !/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(val.value) && paths.length > 0) {
設定する必要があります。言い換えれば、未定義で charAt() が詰まらないように val.value が設定されていることを確認するだけです。
この修正がすぐにプロジェクトに反映され、Bootstrap がブラウザ環境で less.js と連携して動作するようになることを願っています。