Rails 3.2& LESS:application.css.less中的一些@imported LESS文件不会触发重新编译

时间:2013-03-14 15:34:47

标签: ruby-on-rails less

我真的不知道如何调试这个,也许有人有想法。

我有许多LESS文件,我在application.css.less中导入。我们使用Bootstrap,我们希望在我们自己的样式中使用其中定义的变量,因此我们不能在清单中要求LESS文件(因为所需文件似乎不会将其变量公开给其他所需文件)。

一切都很好用,除了一些LESS文件 - 编辑时 - 不要触发重新编译CSS!它似乎是随机的,哪些不做,而且它们中只有6个没有(相比之下总和约为25)。当我在清单中需要其中一个时,它会成功导致重新编译 - 如果我@import它,它不会。

关于如何调试这个的任何想法?如果我重命名其中一个(例如从time_records.lesstime_records2.less),它会在更改后成功触发重新编译...所以它确实对这6个特定文件的名称做了一些事情:

  • calendars.less
  • contacts.less
  • folders.less
  • handout.css.less
  • print.css.less
  • time_records.css.less

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

最新版本的less-rails实现了可以解决您的问题的导入钩子。我意识到这是一个迟到的答案,当时可能还不存在。

导入挂钩

任何@import到.less文件都会自动将该文件声明为导入它的文件的链接器依赖项。这意味着您可以编辑导入的框架文件,并在开发期间查看父项中反映的更改。所以这个:

@import "frameworks/bootstrap/mixins";

#leftnav { .border-radius(5px); }

最终表现得好像你在下面这样做了:

/*
 *= depend_on "frameworks/bootstrap/mixins.less"
*/

@import "frameworks/bootstrap/mixins";

#leftnav { .border-radius(5px); }

depend_on指令

depend_on path声明对给定路径的依赖关系,而不将其包含在bundle中。当您需要使资产的缓存过期以响应另一个文件中的更改时,这非常有用。