Ответ 1
Обновление 5/5/2012. Ребята из Bootstrap исправили эту проблему в версии 2.0.2 Bootstrap (еще не выпущен). См. это коммит.
Основная ошибка заключается в том, что настоящая версия 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";
И затем используя их непосредственно в значении url() для фонового изображения в sprites.less:
[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, который вызывает серьезную проблему. Когда 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) {
и вы должны быть установлены. Другими словами, мы просто гарантируем, что val.value устанавливается так, чтобы charAt() не задыхался на undefined.
Надеемся, что это исправление будет реализовано в ближайшее время, и Bootstrap будет работать с less.js в среде браузера из коробки.