BundleTransformer.Less не удалось разобрать переменные в операторах @import
РЕДАКТИРОВАТЬ: Таким образом, в соответствии с этим невозможно, что является настоящим позором. Мне нужно будет найти библиотеку, которая связывает и сжимает с поддержкой переменных в импорте.
У меня возникли проблемы при попытке получить http://www.nuget.org/packages/BundleTransformer.Less для анализа следующего LESS:
// There is a path to Startup framework
@startup-basePath: "../../../";
@import '@{startup-basePath}flat-ui/less/config.less';
@import '@{startup-basePath}flat-ui/less/mixins.less';
И это выдает следующую ошибку:
You are importing a file ending in .less that cannot be found.":"/lib/startup/samples/template/less/@{startup-basePath}flat-ui/less/config.less
Файлы существуют, но, как вы можете видеть, они не анализируют переменную в строке местоположения. Web Essentials в VS2013 без проблем компилирует файлы LESS и выводит CSS, как и ожидалось. Я подозреваю, что проблема заключается в BundleTransformer или в способе, которым он был настроен. Я использую следующую версию:
Id Version Description/Release Notes
-- ------- -------------------------
BundleTransformer.Core 1.8.0 Bundle Transformer - a modular extension for System.Web.Optimization (aka Microsoft ASP.NET Web Optimization Framework). Classes `CssTransformer` and `JsTra...
BundleTransformer.Less 1.7.16 BundleTransformer.Less contains translator-adapter LessTranslator. This adapter makes translation of LESS-code to CSS-code. Also contains HTTP-handler LessA...
BundleTransformer.Yui 1.8.0 BundleTransformer.Yui contains 2 minifier-adapters: `YuiCssMinifier` (for minification of CSS-code) and `YuiJsMinifier` (for minification of JS-code). These...
Я должен использовать эти версии, так как я использую Umbraco 7, и это не позволит мне обновить Newtonsoft.Json, не нарушая Umbraco.
Мой файл конфигурации пакета выглядит следующим образом:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.UseCdn = true;
var nullBuilder = new NullBuilder();
var nullOrderer = new NullOrderer();
// CSS + LESS
var libCSS = new CustomStyleBundle("~/libCSS");
libCSS.Include(
"~/Content/font-awesome.css",
// LESS
"~/lib/startup/samples/template/less/style.less");
libCSS.Orderer = nullOrderer;
bundles.Add(libCSS);
}
Я предположил, что проблема была в том, что трансформатор Less не был зарегистрирован правильно, но я следовал инструкциям по установке к письму, пожалуйста, смотрите документацию для версии LESS. Кто-нибудь может увидеть что-то, что мне не хватает, что поможет решить эту проблему, или кто-нибудь может порекомендовать что-нибудь, что я мог бы попробовать?
Вся помощь приветствуется.
3 ответа
Мне повезло больше с версиями этих пакетов BundleTransformer 1.9.40 и 1.9.34. У меня были проблемы с версиями 1.8, иногда терпящими неудачу. Мы используем BundleTransformer.Core.1.9.40, BundleTransformer.Less.1.9.40 и BundleTransformer.Yui.1.9.34 уже пару недель без каких-либо ошибок версий 1.8.
BundleTransformer.Less не поддерживает интерполяцию строк в путях к файлам (см. Обсуждение "Интерполяция строк не поддерживается?").
ОБНОВЛЕНИЕ: В BundleTransformer.Less версия 1.9.92 теперь поддерживает интерполяцию в путях к файлам.
Я также пробовал эту библиотеку, но безуспешно:/
Лучшее решение для компиляции LESS - это пакеты node.js LESS ( https://www.npmjs.org/package/less) или Recess ( http://twitter.github.io/recess/).
Поскольку ваши файлы LESS не будут изменены после развертывания веб-проекта, вам не нужно генерировать CSS во время каждой инициализации приложения.
Вы также можете генерировать CSS перед сборкой приложения или после сохранения файла LESS.
Если вы заинтересованы, я могу помочь вам с дополнительной информацией.