rails 3.1自定义链轮预编译资产

时间:2011-09-21 08:45:48

标签: ruby-on-rails-3 sprockets

我正在尝试自定义预编译的资产。在生产中我只想编译application.js和applicaiton.css而不是所有后续文件。

例如,提供以下文件我只想在运行预编译rake任务时输出一个文件(appliation.css)

##application.css
//include components/form.elements
//include components/lists

默认设置是预先编译资产目录中的所有资产,而且非常混乱。

EDIT更正默认情况下,预编译assets目录中的所有非js和css文件。但是,如果你有一个像form.elements.js这样的文件,sprockets将预先编译它认为它是一个非js / css文件。

2 个答案:

答案 0 :(得分:0)

检查sprockets documentation,它非常广泛且写得很好。

对于您的特定问题,以下application.css将仅递归地包含components/form_elementscomponents/lists目录:

/*
 *= require_tree components/form_elements
 *= require_tree components/lists
*/

如果form_elementslists是css文件,只需将require_tree替换为require

答案 1 :(得分:0)

只要您没有任何包含额外句点的文件,默认预编译选项就会起作用。喜欢(jquery.treeview.js)

通过显式定义我想要编译的单个文件,我能够以我想要的方式编译资源。

 config.assets.precompile = [ 'application.css' ]

现在在公共资源文件夹中,只有一个文件包含所有最小化的文件内容。

修改

Rails默认precomplie选项已更改为

[ Proc.new{ |path| !File.extname(path).in?(['.js', '.css']) }, /application.(css|js)$/ ]

所以带有额外句点的文件现在可以正确编译