我正在尝试自定义预编译的资产。在生产中我只想编译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文件。
答案 0 :(得分:0)
检查sprockets documentation,它非常广泛且写得很好。
对于您的特定问题,以下application.css
将仅递归地包含components/form_elements
和components/lists
目录:
/*
*= require_tree components/form_elements
*= require_tree components/lists
*/
如果form_elements
和lists
是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)$/ ]
所以带有额外句点的文件现在可以正确编译