Компилятор LESS и относительные ссылки @import не работают в Web Essentials 2012 v2.7

Обновление до v2.6 работает с VS 2012, и у меня установлено обновление Web Tools 2012.2, но проблема, которую я заметил, не существует в версии v2.5.1 (на данный момент я понизил версию, чтобы исправить), заключается в том, что @import строки в файлах LESS больше не находят файлы, на которые ссылаются, при компиляции.

Компилятор выдает ошибку, если файл, указанный в строке @import, не находится в той же физической папке. Если существует какая-либо информация о пути, например «../../style/common.less», компилятор выдает ошибку и не создает сгенерированный файл CSS.

Ошибка, которую я получаю, заключается в том, что он не может найти файл, а информация о пути усекается либо до первой конструкции родительского пути, либо до нуля. Итак, он ищет «../style/common.less» или «style/common.less». Это кажется прерывистым между ними.

Для возможно связанной проблемы см.: МЕНЬШЕ импорта CSS и относительных путей

ОБНОВЛЕНИЕ: Подтверждено, что ожидаемое поведение корректно работает в LESS версии 1.3.1 и ниже.

Я обновил Web Essentials до версии 2.6 через диалоговое окно обновления расширений Visual Studio. Затем я заменил содержимое файла сценария LESS по пути X:\Users\{USER}\AppData\Local\Microsoft\VisualStudio\11.0\Extensions\{HASH}\Resources\Scripts\less-1.3.0 .js (первоначально это была версия 1.3.3 с обновлением Web Essentials версии 2.6) со сценариями для версий 1.3.0, 1.3.1, 1.3.2, 1.4.0-beta, 1.4.0 и 1.4. .1. Компиляции работали только с версиями 1.3.1 и ниже.

Мне интересно, не сломалось ли что-то, когда была удалена поддержка @import-once.

ОБНОВЛЕНИЕ 2: версия 2.7 Web Essentials по-прежнему демонстрирует это поведение, но его можно исправить, как описано выше.


person Neil Monroe    schedule 28.03.2013    source источник


Ответы (2)


2.6 имеет версию 1.3.3 официального компилятора LESS. В нем может быть ошибка. Я изучу эту проблему и выпущу обновление, когда у меня будет исправление.

Спасибо, что сообщили об этом!

ОБНОВЛЕНИЕ: ИСПРАВЛЕНО!

Теперь это было проверено и исправлено для VS 2012 по состоянию на 16 июля 2013 г.

Версия 2.8 Web Essentials решает проблему в этом вопросе, поэтому, если вы снова обновитесь из Visual Studio 2012 или установив расширение вручную, вы сможете использовать компилятор LESS для относительных операторов @import.

Он будет работать только с LESS 1.3.3 (версия, упакованная с расширением), но это не должно быть проблемой, поскольку теперь оно работает «из коробки».

Чтобы узнать, что еще было обновлено в версии 2.8 расширения, проверьте журнал изменений: http://vswebessentials.com/changelog< /а>

Спасибо Мэдсу Кристенсену и остальным членам команды, которые помогли это исправить!

ОБНОВЛЕНИЕ: АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ

v2.8.1 расширения для VS 2013, размещенного в галерее расширений Visual Studio. Вы должны получить сообщение об автоматическом обновлении VS или перейти в пункт меню "Инструменты > Расширения и обновления..." и обновить его оттуда.

person Mads Kvist Kristensen    schedule 28.03.2013
comment
Привет, есть новости по этому поводу. Вчера столкнулся с такой же проблемой :( - person Nick; 01.05.2013
comment
Та же проблема, использовал исправление OP, но было бы неплохо выпустить обновление. - person Guillaume86; 07.05.2013
comment
Та же проблема. У меня версия less.js 1.3.0, и она работает, но только для относительного пути, например «../». Если я добавлю 2 папки обратно, «../../», это не сработает - person Draykos; 30.05.2013
comment
@Draykos, файл по-прежнему должен называться less-1.3.0.js, но его содержимое соответствует версии 1.3.3 из коробки из обновления VS. Корректно работает только версия 1.3.1 и ниже. Убедитесь, что содержимое файла содержит правильную версию кода. - person Neil Monroe; 31.05.2013
comment
Импорт в 2.8 сейчас у меня сильно ломается. Выложу отчет об ошибке. - person Andre Loker; 17.07.2013
comment
Относительно комментария выше: если b.less импортирует a.less, а c.less импортирует b.less, вывод c.less пуст. - person Andre Loker; 17.07.2013
comment
Я вижу проблему, похожую на @AndreLoker. Если несколько файлов LESS импортируют один и тот же файл, результат компиляции может быть пустым. Это сломалось, как только я обновился до 2.8. - person Eric Brenden; 17.07.2013
comment
Мне удалось исправить самые серьезные проблемы, следуя рекомендациям rjgotten: github.com /madskristensen/WebEssentials2013/pull/ (требуется ручная модификация файлов подключаемого модуля) - person Andre Loker; 17.07.2013
comment
@EricBrenden: это должно быть исправлено на github.com/madskristensen/WebEssentials2013/pull/30 - person SLaks; 17.07.2013
comment
@SLaks Спасибо, жду бэкпорта на 2012 год. - person Andre Loker; 17.07.2013
comment
@AndreLoker: вы можете сделать резервную копию исправления самостоятельно, скопировав новые файлы в каталог ресурсов в установленном расширении. (все, что изменилось, это внешние файлы JS и WSF) - person SLaks; 18.07.2013
comment
import-once также не работает в 2.8, если ваши импортированные файлы ТАКЖЕ содержат аналогичные ссылки import-ince (что, к сожалению, и было целью) - person cirrus; 24.07.2013
comment
в VS2012 текущий WebEssentials 3.0 по-прежнему дает мне неправильные пути, когда мой корень A.less включает B/B.less, содержащий относительный URL-адрес (например, img1/1.png). Что я получаю в A.css (= файл, который я include на странице) — это url(img1/1.png), то же самое я получил бы при компиляции только B.less, в то время как я ожидал url(B/img1/1.png). Последний работает, первый нет. Мой текущий обходной путь — заменить предоставленный less-1.4.2.min.js более старым less-1.3.3.min.js, и на данный момент это работает хорошо. - person Luke; 18.09.2013

Теперь это исправлено и выпущен для VS 2013.

person SLaks    schedule 14.07.2013
comment
Любые предложения для разработчиков, использующих VS 2012? - person Jacob T. Nielsen; 16.07.2013
comment
Итак, была ли это проблема с Web Essentials, компилятором LESS или чем-то еще? Остановлена ​​ли разработка Web Essentials/Web Tools для 2012 года? - person Neil Monroe; 16.07.2013
comment
@NeilMonroe: это была проблема с оболочкой, которая позволяла компилятору LESS работать через WSH. github.com/SLaks/WebEssentials2013/commit/ - person SLaks; 16.07.2013
comment
@JacobT.Nielsen: я спросил Мэдса. github.com/madskristensen/WebEssentials2013/pull/ - person SLaks; 16.07.2013
comment
@JacobT.Nielsen: это было выпущено для VS2012. vswebessentials.com/changelog - person SLaks; 17.07.2013
comment
@SLaks Это было быстро. Большое спасибо. - person Jacob T. Nielsen; 17.07.2013