本番環境でconfig.assets.precompileを使用して、「lib/assets/javascripts」、「lib/assets/stylesheets」、「vendor/assets/javascripts」、「vendor/assets/stylesheets」のファイルのみを含めるにはどうすればよいですか?
基本的に次のようなものです。
config.assets.precompile += %w( pagespecific.js anotherpage.js )
ただし、「app/assets/javascripts」または「app/assets/stylesheets」ではない特定のディレクトリにファイルを自動的に含めるために使用されます。
*編集:ページ固有のjsに使用することになったソリューションを追加する
config.assets.precompile += ['pages/*.js']
あなたは単にこのようにそれを書くことができます:
config.assets.precompile += ['directory/*']
アセットをコンパイルするポイントは、ブラウザーからのHTTP要求の数を最小限に抑えるために、1つ(または少数)のファイルを作成することです。
各ファイルを個別に提供する場合は、プリコンパイルを無効にしないのはなぜですか?
意図したとおりにプリコンパイルを使用するには、Sprocketsのrequire_directory
を使用してディレクトリ全体を1つのファイルにビルドします。
//= require_directory ./awesome_js_app
...そしてそのファイルをconfig.assets.precompile
配列にリストします。
デフォルトでは、すべてのCSSはapplication.css
に組み込まれ、JSはapplication.js
に組み込まれます。 config/environments/production.rb
(および必要に応じて他の環境)のプリコンパイルディレクティブを使用してコンパイルするトップレベルファイルをさらに追加できます。例:
config.assets.precompile += %w( public.css public.js )
次に、これらのトップレベルファイルのSprockets //= require ...
ディレクティブが、最終的にコンパイルされたファイルの構成を決定します。
レイアウトでこれらの追加のトップレベルファイルを使用して、特定のビューに対して異なるCSSとJSを使用できます。
これをアセットパスとして含める方がおそらく少し良いでしょう(ソリューションの例によると):
config.assets.paths << Rails.root.join('app', 'assets', 'javascripts', 'pages')
また、アセットディレクトリにないパスを含めることもできます(たとえば、bootstrap-sass
を含める)。これらのパスは、パブリックディレクトリのアセットフォルダに追加され、asset_sync
などを使用している場合はアセットの場所にプッシュされます。
私はこのリンクを見つけました、そしてそれがあなたのために役立つかもしれないと思います、見てください
keithgaputisの答え。 app/assets内のすべてのCSSおよびJSファイルを処理するためのRailsconfig.assets.precompile設定
次のようにできると思います。
# In production.rb
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
if full_path.starts_with? app_assets_path
puts "excluding asset: " + full_path
false
else
puts "including asset: " + full_path
true
end
else
false
end
}
Sprockets 3以降では、manifest.jsファイルを使用して、プリコンパイルされるファイルまたはディレクトリを宣言できます。 アップグレードドキュメント を参照してください。したがって、構成に次を追加します。
config.assets.precompile = %w(manifest.js)
次に、app/assets/config /manifest.jsで
//= link_directory ../pages .js
使用する link_tree
ネストされたサブディレクトリ内のjsファイルもプリコンパイルする場合。