保存导入的LESS时自动生成主CSS

时间:2012-03-10 02:10:21

标签: compiler-construction less dotless

我在我的ASP.NET MVC项目中使用Dotless,我有一个主要的少文件,只导入其他一些文件。

e.g。

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 个答案:

答案 0 :(得分:3)

我使用Simpless来做我的LESS编译,你给它你的主.less文件,它会观察那个和任何子.less文件并在后台为你编译。

答案 1 :(得分:0)

这是一个老问题,遗憾的是没有办法以原生方式做到这一点。 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

答案 2 :(得分:0)

Winless正是这样 - 它是一个类似于simpless的编译器,但我发现它更可靠。 http://winless.org/ -