web-dev-qa-db-ja.com

Rails 3.1パイプライン-Javascriptファイルを除外する

特定のjavascriptファイル(modernizr)を個別にロードしたいので、パイプラインから除外したいと思います。

最初にModernizrをロードし、最後にJavaScriptの残りの部分を連結したいと思います。

3.1のアセットパイプラインでrequireの反対を行う方法はありますか?すなわち。除外しますか?

前もって感謝します。

アダム。

29
Adam

変更してスプロケットの機能を維持することにしました

//= require_tree

//= require_directory .

これにより、スプロケットは同じディレクトリ内のファイルを自動ロードし続けますが、それ以上のフォルダにはロードしません。

これにより、Modernizr.jsをassets/javascripts/topフォルダーに移動し、次のコマンドを使用して手動で上部にロードすることができました。

<%= javascript_include_tag "top/modernizr" %>

移動します

<%= javascript_include_tag "application" %>

Application.html.erbファイルの下部(本文の終了タグの上)

56
Adam

これは古い質問だと思いますが、先週Googleからここに送られてきたので、時代遅れの質問ではありません。私が他の場所で見つけた答えは スプロケットの「スタブ」ディレクティブ でした。だから何かのような

//= require-tree .
//= stub Modernizr

これにより、Modernizr.jsがバンドルされたアセットから除外されます。元の回答と同様に、独自のタグを含めることができます。

Sprocketsの変更ログには、「スタブ」が2012年1月に追加されたため、この質問に最初に回答した時点では利用できなかったと記載されていますが、今は良い回答だと思います。

23
mcdave

これは、config/environment/production.rbファイルに移動し、次の行を追加することではるかに簡単に実行できます。

config.assets.precompile += %w( modernizr.js )

次に、アセットをプリコンパイルすると、モダナイザーには、頭の中で使用できる独自の個別のファイルがあります。

14
kennethlmartin

これらの答えは時代遅れです。 active_admin.css.scssapp/assets/stylesheetsからvendor/assets/stylesheetsに移動するだけです。

active_admin.js.coffeeでも同じことを行います(app/assets/javascriptsからvendor/assets/javascriptsに移動します)。

その後、必要に応じてアセットが読み込まれ、active_adminに対応するためにapplications.jsを変更する必要はありません。

この解決策は この問題 で説明されています。お役に立てれば。

2
Yuval Karmi