在Rails 3.2中重新编译父LESS文件

时间:2012-08-25 07:48:38

标签: ruby-on-rails less less-rails

我正在使用“less-rails”宝石来减少与我的rails应用程序的集成。

在我的“applications.css.less”文件中,我将其他LESS文件导入其中。当我对任何导入的文件进行更改时,我需要重新保存“application.css.less”文件,以便它获取更改。

如果更改了其中一个导入的文件,如何自动重新编译“applications.css.less”文件?

3 个答案:

答案 0 :(得分:1)

找到了这里提到的解决方案:https://github.com/metaskills/less-rails/issues/80

gem 'less-rails', github: 'dv/less-rails', branch: 'fix-import-dependencies'

不会使用livereload,所以我回到cmd + r

答案 1 :(得分:0)

这是一个老问题,遗憾的是没有办法以原生方式做到这一点。 LESS编译器只监视修改过的文件。因此,如果您使用带导入的文件,则需要修改并重新编译此文件。

在开发环境(使用javascript)中,您可以解决此问题,以便清除缓存:

  <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)

我的其他较少的文件没有通过资产管道。一旦我修复了它并将它们导入我的“application.css.less”文件,“application.css.less”就会在其他文件发生变化时自动重新编译。