从资产中排除文件:在rails中预编译

时间:2012-10-17 16:31:37

标签: ruby-on-rails-3 ruby-on-rails-3.2 less asset-pipeline precompile

我使用codekit编写less,然后自动将其转换为css。

我不希望rails将我较少的文件转换为css,我宁愿使用codekit。

如果我通过

预编译资产
rake assets:precompile

我得到了

rake aborted!
cannot load such file -- less

如何从预编译排除特定文件夹/文件类型? (我所有较少的文件都在app / assets / stylesheets / less中,而css(我确实想要预编译)在app / assets / stylesheets / css中

更新

删除application.less解决了这个问题,但如何将其从处理中排除?

2 个答案:

答案 0 :(得分:19)

来自Asset Pipeline指南:

  

编译文件的默认匹配器包括application.js,   application.css和所有非JS / CSS文件(即.coffee和.scss   文件在编译到JS / CSS时不会自动包含在内:

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

如果您有其他清单或单独的样式表和JavaScript   要包含的文件,您可以将它们添加到预编译数组中:

config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']

因此,我想说您的解决方案是修改config.assets.precompile以排除.less个文件。也许是这样的(在合适的环境文件中,如config/environments/production.rb):

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

答案 1 :(得分:1)

如果app / assets文件夹下的目录结构是这样的:

application.css
/css
 (generated by code kit)
 |...home.css
 |...index.css
/less
 |...home.less (assuming this is the extension)
 |...index.less

然后,在你的application.css文件中,必须有一个指令*= require_tree .这告诉rails扫描所有文件/目录并尝试将所有文​​件编译成一个css文件。

将其更改为*= require_directory ./css,它将加载css目录下的文件进行编译。