16

rake assets:precompile特定の JavaScript ファイルに対して実行できますか?

そうしないと、完全なプリコンパイルが 5 分間続き、JavaScript ファイルの迅速な変更が非常に煩わしくなります。

4

5 に答える 5

13

1 つのファイルだけをプリコンパイルしたい場合は、カスタムの rake タスクを作成してかなり簡単に行うことができます。

namespace :assets do

  desc "compile one js file"

  task :compile_one_file => :environment do
    dest = "#{Rails.root}/vendor/assets/javascripts/compiled/"
    js_asset = "your_jsfile.js"
    File.write(dest + js_asset, Uglifier.compile(Rails.application.assets.find_asset(js_asset).to_s))
  end

end

次にコマンドラインから

rake assets:compile_one_file

これが役立つことを願っています.jqueryやjqueryプラグインなど、頻繁に変更しないベンダーのjsファイルに役立つと思います. そうすれば、開発中にページの読み込みが高速化され、アセット パイプラインがベンダー ファイルのすべての個別の要求をルーティングする必要がなくなります。すべてのベンダー js の 1 つの縮小された js ファイルを提供するだけです。

于 2014-03-20T16:49:33.527 に答える
6

ショート: できません。

プリコンパイル中、Rails は Application.js ファイルを調べて、すべてのインポートを 1 つにマージするため、1 つのファイルを変更するだけでは、そこで圧縮が行われるため不可能です。(application.js から参照されていないファイルに対しては何もしません)

次は: クイックフィックスを行う場合、開発中に rake assets:precompile を実行する必要はありません。(忍耐力にもよりますが)5分間タスクを実行しても問題ない展開の場合のみ。

Rails はマージも縮小もされていないアセットを提供するため、アセットのプリコンパイルが必要ない開発中は、開発環境を使用する必要があります。RailsビルドをWebサーバーで実行している場合、rails sこれはデフォルトである必要がありますが、次を使用して明示的にRailsサーバーを起動できます。

rails s RAILS_ENV=development

それでもアセットが正しく表示されない場合、またはエラーが表示される場合は、config.assets.debug = true

于 2012-07-10T13:41:48.343 に答える
5

@Tigraine は部分的に正しいです。Rails 3.1+ アセットは、Rails によって完全に管理されることを意図しており、デフォルトでは、すべてのアセットが 1 つの js アセットと 1 つの css アセットにコンパイルされます。

でも...

単一のアセットへのコンパイルは、Sprockets gem によって処理されるアセット マニフェスト (application.js および application.css) の使用に依存します。デフォルトでは、これらのマニフェストには require_tree ディレクティブが含まれており、すべてのファイルを含むのはそのディレクティブです。そのディレクティブを削除すると、アセットをコンパイルするためにもう少し作業が必要になります。

別のアセットを構築したい場合は、application.rb で設定オプションを設定できます。

config.assets.precompile += %w( additional/asset.css funky/stuff.js )

上記の行により、ファイル additional/asset.css および funky/stuff.js が、アセットがプリコンパイルされるときに生成されるファイルのリストに追加されます (「+=」はデフォルト リストを拡張するために使用されていることに注意してください)。できるだけ明確にすると、4 つのアセットがプリコンパイルされることになります: application.js、funky/stuff.js、application.css、および additional/asset.css。

そうは言っても、guard-rails-assetsジェムを確認することをお勧めします。gem はプリコンパイルをサポートするという点で柔軟です。変更されたアセットのみをプリコンパイルできます。私はそれについていくつかの良いフィードバックを聞いたことがありますが、自分で使用したことはありません.

于 2013-05-16T14:39:31.870 に答える
3

@Tigraine は正しくありません。

フォルダーを作成し、その中に css ファイルを配置して、それを assets フォルダー内の別のファイルにインポートするだけで済みます。

お気に入り

application.css
 *= require_self
 *= require foundation_and_overrides
 *= require reset
 *= require_tree ./screen

Screen は、スタイルシート フォルダー内に配置したフォルダーです。のようにassets/stylesheets/screen/。私はapplication.cssを呼び出します

<%= stylesheet_link_tag    "application", media: "screen, projection" %>

ここで、別のレイアウト用に 1 つの css ファイルを作成する場合は、その下に作成しますassets/stylesheets

xxx.css のように

xxxに複数のファイルが必要な場合は、上記と同じ手順に従いますが、ここで重要な部分は、この行を

production.rb

config.assets.precompile += %w( xxx.css )

次に、レイアウト内に次を追加します。

<%= stylesheet_link_tag    "xxx", media: "screen, projection" %>
于 2013-11-11T17:18:27.933 に答える