49

I want Rails 3.1 to pick up more of my assets for precompilation. In particular, the default matcher for compiling files doesn't add .js files from vendor/assets/javascripts. I can just add the assets to the config.assets.precompile list, but this seems annoying. I don't want to refer to them in the application.js manifest, because I don't want them included in all pages.

In summary, any way to request that all .js files found in vendor/assets/javascripts get precompiled by rake assets:precompile, but without having them included in all pages?

4

3 に答える 3

70

config.assets.precompile正規表現とワイルドカード マッチングを受け入れます。そのため、すべてのjs ファイルが確実にコンパイルされるようにするには、それぞれの名前を指定せずに、次のようにする必要があります。

config.assets.precompile << '*.js'
于 2011-09-07T00:59:42.787 に答える
2

app/assets 内のすべての CSS および JS ファイルを処理するように、Rails の config.assets.precompile 設定で指定された例を変更しました。これが私のバージョンです。これは、/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
}
于 2013-03-21T17:05:59.500 に答える
0
# Precompile *all* assets, except those that start with underscore
config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/

完全な説明については、55minutesブログを参照してください。

これにより、JavaScript (.js、.coffee、.swf、.css、.scss) だけでなく、あらゆるアセットがプリコンパイルされます。

于 2014-04-16T22:09:03.313 に答える