13

ベンダー化されたアセットをルート ファイルとしてコンパイルするのに問題があります。

次のアセットをスタンドアロンで利用できるようにしたい (他のアセットとパッケージ化されていない_:

vendor/gems/neo-viz/app/assets/stylesheets/neo-viz.css.scss
vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js.coffee
vendor/gems/neo-viz/app/assets/javascripts/lib/jQuery/jquery-1.6.1.min.js
vendor/gems/neo-viz/app/assets/javascripts/lib/arbor/arbor.js

次の行を使用します。

config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css )

css ファイルのみがプリコンパイルされ、利用可能になります。なんで?

また、この質問(Rails の config.assets.precompile を使用してサブディレクトリにアセットを含める)を見た後、次のことを試しました。

config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css lib/arbor/arbor.js arbor/arbor.js lib/jQuery/jquery-1.6.1.min.js jQuery/jquery-1.6.1.min.js   )

しかし、違いはありませんでした。アイデア?

4

1 に答える 1

18

デフォルトでは、Rails はapp/assetslib/assetsまたはの 3 つの場所のみを検索しますvendor/assets。Sprockets はサブディレクトリで JS アセットを探しますjavascripts。例えば

app/assets/javascripts/arbor.js
lib/assets/javascripts/arbor.js
vendor/assets/javascripts/arbor.js

Rails が探している場所を確認したい場合は、コンソールでこれを使用できます。Rails.application.config.assets.paths

できることは、カスタム パスをパイプラインに追加することです。

 # @file: config/application.rb
 config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts")

次に、JS ファイルを含むマニフェストを作成します。

# @file: /vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js
//= require lib/jQuery/jquery-1.6.1.min
//= require lib/arbor/arbor
//= require neo-viz

最後にマニフェストを追加します。

config.assets.precompile += %w( neo-viz.js )'

それでもそれらを個別に追加したい場合は、要点がわかりませんが、それらをマニフェストに含めないでください。Railsがどこを見ればよいかを知るために、可能なすべてのパスプレフィックスを追加する必要があります。

 # @file: config/application.rb
 config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "stylesheets")
 config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts")
 config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "jQuery")
 config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "arbor")

マニフェスト外のアセットはプリコンパイル配列に追加する必要があるため、次のように追加できます。

config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css )

出典: 2.1 アセットの構成

于 2012-06-27T17:13:30.583 に答える