2012-07-11 50 views
7

由于具体的设置,我想将编译的样式表分成两个文件。这是因为可以解析CSS的Java应用程序需要CSS(的一部分),但是它有点bug并且无法处理一些css(hack)语法。因为我无法修改这个Java应用程序,所以我只想给它提供它所需要的CSS,并且我可以确保它是正确的。Rails资产pipleline:编译为多个样式表

因此,通常资产管道只会生成一个'/assets/application-[..].css'文件。它会让它也根据我所做的文件选择生成'/assets/custom-[..].css'。这仍然可以预编译。

有没有办法做到这一点?虽然我知道这不是理想的设置。

回答

12

要提示您希望预编译的其他文件,可以将它们添加到config.assets.precompile设置中。

config.assets.precompile += ["other_application.css"] 

你只看到application.css在你的HTML,因为这是你包括

<%= stylesheet_link_tag "application" %> 

的唯一文件如果你有一些custom.css.scssapps/assets/stylesheets目录中,它会就像application.css进行编译。

例如,我可能有

- _common.css.scss 
- application.css.erb.scss 
- other_application.css.erb.scss 
app/assets/stylesheets

。在非部分文件的顶部,我将把

@import "common"; 

包括_common.css.scss。现在我可以在布局中引用任何独立的样式表。

<%= stylesheet_link_tag "application" %> 
# or 
<%= stylesheet_link_tag "other_application" %> 
+0

谢谢你的回答,但不幸的是我不能得到它的工作。当我在/ app/assets/stylesheets中包含_common.css.scss文件时,它不会显示为编译文件(我使用Heroku和Heroku控制台浏览文件)。此外,只有application.css被视为清单文件。 other_application.css不会被编译,即使我使用stylesheet_link_tag来引用它。 --update-- 要使other_application.css可用我需要它添加到config.assets.precompile + =%w(other_application.css)在production.rb – Roemer 2012-07-12 09:23:05

+0

谢谢,我已经更新了我的答案。我再次检查了我的应用程序代码,并意识到我有'config.assets.precompile'设置了一个glob,它抓取'app/assets/stylesheets'中所有不带'_'前缀的文件。对困惑感到抱歉;我在回答中说过的内容最初对于我的应用程序来说是真实的:) – deefour 2012-07-12 11:38:32

+0

还值得指出的是,这个相同的设置用于您的JS文件,以获得像'application.js'这样的额外文件来预编译 – deefour 2012-07-12 11:39:05