2017-12-06 19 views
2

Ruby on Rails 응용 프로그램에서 require 또는 importnpm 또는 yarn을 통해, 그러나 bundle을 통해 설치되지 않은 패키지는 어떻게 할 수 있습니까?'bundle'에 의해 설치된 패키지를 webpack에로드하는 방법은 무엇입니까?

//= require package-name 

을하지만 그 webpacker와 함께 작동하지 않습니다

나는 시도했다.

require("package-name")도 작동하지 않습니다 (node_modules에 없기 때문에).

+0

당신이 bundle''무엇을 의미합니까 무슨 일이 있었 볼 수 config/initializers/assets.rb을 확인할 수 있습니까? – brk

+0

@brk Ruby 's Bundler. 그것은 패키지 관리자 ('Bundler version 1.16.0')입니다. –

+0

기본 Rails 파이프 라인 (Sprockets)을 사용하여 파일을로드하는 경우 Rails.application.config.assets.paths를 다음과 같이 변경해야합니다. –

답변

0

웹팩 경험이없고 문제에 대한 해결책이 없습니다.

무엇 웹팩 내가 어디 자바 스크립트 응용 프로그램 파일에 대한 간단한 규칙으로 documentation paths chapter

기본적으로

Paths

, Webpacker 선박에 읽고 컴파일로이

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

에 대한 번들은 Rails 앱에 포함되지만이 모든 옵션은 config/webpacker.yml 파일에서 구성 할 수 있습니다. .

이 무엇 웹팩에 대한 구성은 기본적으로 컴파일 할 예정이다 것은, 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 # 출력을에 => 공공/자산/ 은 마찬가지로 당신은 또한 제어하고 웹팩-DEV-서버 설정을 구성 할 수 있습니다 팩에서 설정/webpacker.yml 파일 :

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

당신이 HMR이 true로 설정되어있는 경우는, 다음 stylesheet_pack_tag은 사기 할 것 같은, 어떤 출력을 생성하지 뜨거운 재로드를 위해 자바 스크립트에서 인라인 될 스타일을 지정하십시오. 제작과 테스트 중에 stylesheet_pack_tag은 적절한 HTML 태그를 생성합니다.당신이 당신의 application.js 또는 application.scssrequire을 수행 할 때

자산 파이프 라인로드 Rails.application.config.assets.paths

이 정의 경로에서 파일을 sprockets 것, 내 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"] 

의 출력입니다 ruby require 문을 사용하여 미리 정의 된 경로에서 해당 파일을 검색하십시오.

GEM의 경우 .rbenv/version/yourversion 폴더에서 찾을 수 있습니다.

이 문제를 해결하기위한 방법은 올바른 폴더에 프론트 엔드 앱에 필요한 파일을 포함시키는 것입니다. 따라서 GEM에서 저장소를 방문하여 올바른 위치에 파일을 붙여 넣으십시오.

나는 이것이 당신의 문제에 대한 해결책이 아니라는 것을 알고 있지만, 나는 당신을 도우려고했다. 일부 파일을 필요로 할 경우 안녕 파브리 지오

0

일반 레일 환경의 경우, 일반 디렉토리 경로를 사용할 수 있습니다. 다음 방금 패키지를 들어 당신을 수동으로 당신의 application.js

//= require ./something.js 

를 작성해야

는 자산 폴더이

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

과 같은 가정하면 something.js을 필요로 할 어딘가에 패키지를 추가해야합니다. Rails.application.config.assets.paths

,

당신이 레일의 V5를 사용하는 경우,로드 node_modules의 마법