Rails 6: Как отключить Webpack и использовать Sprockets вместо

#ruby-on-rails #rails-sprockets

#ruby-on-rails #rails-sprockets

Вопрос:

Я переношу приложение Rails 5.2 на 6.0 для ActionMailbox, ActionText и нескольких баз данных. Однако я не знаю webpack и хотел бы использовать Sprockets вместо этого.

Как мне правильно удалить webpack из Rails 6 и установить Sprockets? rails new app сразу устанавливает файлы webpack. Есть ли способ легко установить sprockets по умолчанию?

Предполагалось, что Rails (Ruby) является соглашением о настройке, но Webpack (Javascript) отменяет это, добавляя много конфигурации и сложности.

Комментарии:

1. rails new —help предоставляет множество опций при создании приложения.

2. В итоге я вернулся к Rails 5.2.4, поскольку функции Rails 6 не стоили таких затрат (оперативная память усилия)

3. Вам когда-нибудь удавалось заставить actiontext работать без webpacker?

Ответ №1:

Я нашел эту ссылку полезной, я опубликую ее здесь:

Используйте опцию —skip-webpack-install при создании нового приложения

Измените Gemfile, удалите webpacker , добавьте:

 gem 'sass-rails', '>= 5'
gem 'sprockets', '~> 4'
gem 'sprockets-rails', :require => 'sprockets/railtie'
  

Затем

 bundle update sass-rails sprockets # if you are updating 
bundle install # or simply install
  

Если вы используете sprockets 4, измените app/assets/config/manifest.js на:

 //= link_tree ../images
//= link application.js
//= link application.css
  

Если вы используете sprockets 3, добавьте в config/initializers/assets.rb :

 # Rails.application.config.assets.precompile  = %w( application.js )
  

Восстановить app/assets/javascripts/application.js :

 //= require rails-ujs
//= require turbolinks
//= require_tree .
  

Измените javascript_pack_tag на javascript_include_tag в app/views/layout/application.html.erb

Комментарии:

1. У меня работает ( github.com/ecovillage/cabler/commit / … )

2. Следует отметить одну вещь: при использовании --skip-keeps опции при создании приложения Rails она не создает app/assets/images папку, в результате чего происходит сбой Sprockets без указания причины. Запуск touch app/assets/images/.keep исправляет это. Я потратил несколько часов на это препятствие!

3. У меня это не работает, поскольку у меня есть application.scss файл. Вот мой manifest.js: //= link_tree ../images //= link_directory ../javascripts .js //= link_directory ../stylesheets .scss //= link application.scss

Ответ №2:

Если вы хотите пропустить добавление webpacker gem при создании нового приложения rails, используйте —skip-javascript (поскольку Webpacker является компилятором JavaScript по умолчанию для Rails 6).

как указано в этой ссылке