将CSS minifier添加到Sprockets

时间:2015-07-24 11:08:28

标签: ruby yui rack sprockets

我有一个使用机架的网络应用程序。

代码:

set :assets, (Sprockets::Environment.new { |env|
    env.js_compressor = Uglifier.new({
      :output => {
        :preserve_line => true,
        :bracketize => true,
        :beautify => true,
        :indent_level => 4,
        :semicolons => true,
      },
      :mangle => false
  })

  env.append_path(APP_ROOT + "/app/assets/images")
  env.append_path(APP_ROOT + "/app/assets/javascripts")
  env.append_path(APP_ROOT + "/app/assets/stylesheets")
})

我现在想要添加一个CSS缩小器。

  1. 有人可以解释为什么只有javascript文件进入上面的JS压缩器?
  2. 我可以在JS_compressor之后添加类似 env.css_compressor = YUI :: CssCompressor.new()的东西来完成我的要求
  3. 更新:第二个确实有效。但我不知道它是如何工作的:)

1 个答案:

答案 0 :(得分:0)

您尚未设置Sprockets :: Environment.css_compressor变量,因此没有压缩器可用于text/css资产。

puts Sprockets::Environment.methods.inspect
#=> [...#css_compressor, #css_compressor=, #js_compressor, #js_compressor=,...]

要回答有关如何加载资源的问题,是的,默认情况下指向一个加载路径,您也可以操纵它以包含其他加载路径。 https://github.com/sstephenson/sprockets

  

加载路径是Sprockets用于的目录的有序列表   搜索资产。要将目录添加到环境的加载路径,请使用append_path和prepend_path方法。