Rails 3.1资产预编译-包括所有javascript文件

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我想让Rails 3.1拿起更多我的资源进行预编译。特别是,用于编译文件的默认匹配器不会.js从中添加文件vendor/assets/javascripts。我可以将资产添加到config.assets.precompile列表中,但这看起来很烦人。我不想在application.js清单中提及它们,因为我不希望它们包含在所有页面中。

总之,有什么方法可以请求获得的预编译的所有.js文件,但没有将它们包含在所有页面中?vendor/assets/javascriptsrake assets:precompile

提问于
用户回答回答于

config.assets.precompile接受正则表达式和通配符匹配-所以确保编译JS文件时,不需要指定每个文件的名称,这样的操作应该可以做到:

config.assets.precompile << '*.js'
用户回答回答于

我修改了在Rails config.assets.precompile设置中给出的示例,以处理应用程序/资产中的所有CSS和JS文件,这里是我的版本,它取自/ app和/ vendor的所有资产

config.assets.precompile << Proc.new { |path|
  if path =~ /\.(css|js)\z/
    full_path = Rails.application.assets.resolve(path).to_path
    app_assets_path = Rails.root.join('app', 'assets').to_path
    vendor_assets_path = Rails.root.join('vendor', 'assets').to_path

    if ((full_path.starts_with? app_assets_path) || (full_path.starts_with? vendor_assets_path)) && (!path.starts_with? '_')
      puts "\t" + full_path.slice(Rails.root.to_path.size..-1)
      true
    else
      false
    end
  else
    false
  end
}

扫码关注云+社区