Автоматически генерировать основной CSS при сохранении импортированного LESS - PullRequest
2 голосов
/ 10 марта 2012

Я использую Dotless в своем проекте ASP.NET MVC, у меня есть основной файл less, который просто импортирует некоторые другие файлы.

например

main.less содержит:

@ import "lib / utils" @import "lib / account" @import "lib / settings"

Идея состоит в том, чтобы иметь один файл css во всем приложении.

Когда я сохраняю файл main.less, компилятор без точек автоматически генерирует файл main.css, однако, когда я сохраняю один из других файлов (например, utils.less), он просто генерирует файл utils.css, поэтому, если я внесу изменение влюбой из .less файлов, которые мне нужно открыть main.less и сохранить его, чтобы запустить компилятор и получить файл .css

Мне было интересно, есть ли способ автоматически скомпилировать основной файл меньше независимо от того, какойФайл .less сохраняю.

Спасибо

Ответы [ 3 ]

3 голосов
/ 13 марта 2012

Я использую Simpless для выполнения моей LESS-компиляции, вы даете ему свой основной файл .less, и он будет смотреть этот и любые дочерние файлы .less и компилироваться для вас в фоновом режиме.

0 голосов
/ 22 ноября 2012

Winless делает именно это - его компилятор похож на Simpless, но я нашел его более надежным. http://winless.org/ -

0 голосов
/ 11 марта 2012

Это старая проблема, и, к сожалению, нет способа сделать это обычным способом.Компилятор LESS просто смотрит измененные файлы.Таким образом, если вы используете файл с импортом, этот файл необходимо изменить и перекомпилировать.

В среде разработки (с помощью js) вы можете поместить это в очистить кеш:

  <link rel="stylesheet/less" type="text/css" href="/css/style.less"/>
  <script src="/js/less-1.1.5.min.js" type="text/javascript"></script>
  <script>
    less = {env:'development'};
    function destroyLessCache(pathToCss) { // e.g. '/css/' or '/stylesheets/'
      if (!window.localStorage || !less || less.env !== 'development') {
        return;
      }
      var host = window.location.host;
      var protocol = window.location.protocol;
      var keyPrefix = protocol + '//' + host + pathToCss;

      for (var key in window.localStorage) {
        if (key.indexOf(keyPrefix) === 0) {
          delete window.localStorage[key];
        }
      }
    }
    window.onload=destroyLessCache('/css/');
  </script>

Ссылка:https://github.com/cloudhead/less.js/issues/47

...