2017-12-06 10 views
2

Ruby on Railsアプリケーションでrequireまたはimportnpmまたはyarn経由でインストールされなかったパッケージをbundle経由でインストールするにはどうすればよいですか?`bundle 'によってインストールされたパッケージをwebpackにロードするには?

私が試した:

//= require package-name 

をしかし、それはwebpackerで動作するようには思えません。

require("package-name")も(node_modulesには存在しないため)機能しません。

+0

が起こりましたか? – brk

+0

@brk Ruby's Bundlerこれはパッケージマネージャー( 'Bundler version 1.16.0')です。 –

+0

デフォルトのRailsパイプライン(Sprockets)を使ってファイルをロードする場合は、以下のようにRails.application.config.assets.pathsを変更する必要があります。 –

答えて

0

ウェブパックの経験はなく、問題の解決方法はありません。

この

https://webpack.js.org/loaders/bundle-loader/

について、私はデフォルトでdocumentation paths chapter

Paths

に読んで、JavaScriptのアプリのファイルとコンパイルするための簡単な規則とWebpacker船のWebPACKバンドルはあなたのRailsアプリケーションに入りますが、これらのオプションはすべてconfig/webpacker.ymlファイルから設定可能です。

デフォルトでコンパイルすることになっているものWebPACKのための設定は、すべてのapp/javascript/packs/*内のファイル(デフォルト)か、webpacker.yml設定でsource_entry_pathに設定されたものは何でもパスは、独自の出力ファイル(またはエントリ・ポイントになっている慣例にかかっています、 webpackが呼び出すとき)。したがって、あなたはエントリファイルになりたくないものをpacksディレクトリの中に置く必要はありません。経験則として、 "packs"ディレクトリ内にあなたのビューにリンクしたいファイルを全て入れて、他のものはすべてapp/javascriptの下に置いてください。

ソースディレクトリをapp/javascriptからフロントエンドに変更し、assets/packsに出力するとします。これは、あなたがそれを行うだろうかです:

# config/webpacker.yml 
source_path: frontend 
source_entry_path: packs 

public_output_path: assets/packs#出力をする=>公共/資産/ は同様にあなたも制御およびWebPACKの-devのサーバー設定を構成することができますパックからのconfig/webpacker.ymlファイルは:

# config/webpacker.yml 
development: 
    dev_server: 
    host: localhost 
    port: 3035 

あなたはHMRがtrueになっている場合は、その後、stylesheet_pack_tagはあなたがコンたいと思うように、何も出力を生成しませんホットリロードのためにJavaScriptでインライン展開するスタイルを決めます。制作とテストの間、stylesheet_pack_tagは適切なHTMLタグを作成します。

アセットパイプラインは、あなたのapplication.jsapplication.scssrequiresprockets意志を行うとこれは私のrails console

["/home/fabrizio/Documents/Sublime/Rails/surfcheck/app/assets/config", 
"/home/fabrizio/Documents/Sublime/Rails/surfcheck/app/assets/images", 
"/home/fabrizio/Documents/Sublime/Rails/surfcheck/app/assets/javascripts", 
"/home/fabrizio/Documents/Sublime/Rails/surfcheck/app/assets/stylesheets", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/font-awesome-rails-4.7.0.2/app/assets/fonts", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/font-awesome-rails-4.7.0.2/app/assets/stylesheets", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/jquery-rails-4.3.1/vendor/assets/javascripts", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/coffee-rails-4.2.2/lib/assets/javascripts", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/actioncable-5.1.4/lib/assets/compiled", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/actionview-5.1.4/lib/assets/compiled", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/turbolinks-source-5.0.3/lib/assets/javascripts", 
#<Pathname:/home/fabrizio/Documents/Sublime/Rails/surfcheck/node_modules>, 
#<Pathname:/home/fabrizio/Documents/Sublime/Rails/surfcheck/vendor>, 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bootstrap-sass-3.3.7/assets/stylesheets", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bootstrap-sass-3.3.7/assets/javascripts", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bootstrap-sass-3.3.7/assets/fonts", 
"/home/fabrizio/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bootstrap-sass-3.3.7/assets/images"] 

から出力されRails.application.config.assets.paths

で定義されたパスからファイルをロードしますruby requireステートメントを使用して、定義済みのパスでそのファイルを検索します。

GEMの場合、.rbenv/version/yourversionフォルダにあります。

この問題を解決する私のアプローチは、正しいフォルダにフロントエンドアプリケーションに必要な宝石のファイルを含めることです.GEMからリポジトリにアクセスして、正しい場所にそれらのファイルを貼り付けてください。

私はこれがあなたの問題の解決策ではないことを知っていますが、私はあなたを助けたいと思っています。あなたはいくつかのファイルを必要とする場合にさようなら ファブリツィオ

0

は、通常のRailsの環境では、通常のディレクトリパスを使用することができます。

あなたの資産フォルダがこの

├── application.js 
└── something.js 

のように見え、あなたがsomething.jsを必要とする場合、あなたは単に手動でパッケージの場合、あなたのapplication.js

//= require ./something.js 

を書くために必要があるとしどこかに置いたら、パッケージの場所を追加する必要があります。Rails.application.config.assets.paths

あなたがRailsのV5を使用している場合は、ロードnode_modulesの魔法を見てconfig/initializers/assets.rbを確認することができますが、あなたがbundle` `によって何を意味

関連する問題