如何解决Rails资产管道中的依赖关系顺序问题?

5
我有一个使用大量单独的.less文件来构建样式的RoR应用程序。我有一个主要的.less文件(config.less),其中包含其他文件使用的变量。我可以手动遍历每个子文件并添加@import语句,但是我有很多这样的文件,这似乎不是最好的方法。如果我使用*= require_tree .,是否有一种标准的设置特定顺序的方法?
我已经尝试在require_tree之前包含require它。
...
*= require 'less/config'
*= require_tree .

但是我在后续的.less文件中仍然遇到了错误,提示无法在config中找到值。

variable @base is undefined
  (in /Users/me/project/app/assets/stylesheets/less/mixins.less)
1个回答

4
标准做法是不要使用*= require_tree .,而是单独指定导入/需要的行。
引用自Rails指南

指令从上到下处理,但是require_tree包含的文件顺序未指定。你不应该依赖于它们之间任何特定的顺序。如果您需要确保某些特定JavaScript文件在连接文件中出现在其他文件上方,请在清单中首先引用前提文件。注意,require系列指令可以防止重复包含文件。


好的,我肯定会买。以这种方式做时,我遇到了问题,因为我在我的主要应用程序布局中包含了这个标签:<%= stylesheet_link_tag params[:controller] %>,然后Heroku抱怨不能找到那些特定的文件,因为它们没有预编译。 - jbnunn
那是一个完全独立的问题。Rails 默认只预编译 application.jsapplication.css - deefour
请查看**Rails指南**,特别是:编译文件的默认匹配器包括application.js、application.css和所有非JS/CSS文件(这将自动包括所有图像资产):您需要在config/application.rb中查看config.assets.precompile - deefour

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接