Rails 6: How to disable Webpack and use Sprockets instead

Jun Dalisay picture Jun Dalisay · Mar 18, 2019 · Viewed 14k times · Source

I'm migrating a Rails 5.2 app to 6.0 for ActionMailbox, ActionText, and multiple databases. However, I don't know webpack and would like to use Sprockets instead.

How do I properly remove webpack from Rails 6 and install Sprockets? rails new app installs webpack files right away. Is there a way to default to sprockets easily?

Rails (Ruby) was supposed to be convention over configuration, but Webpack (Javascript) cancels this by adding a lot of config and complexity.

Answer

eikes picture eikes · Oct 23, 2019

I found this link helpful, I will crosspost here:

Use option --skip-webpack-install when generating a new app

Change Gemfile, remove webpacker, add:

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

Then

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

If you are using sprockets 4, change app/assets/config/manifest.js to:

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

If you are using sprockets 3, add to config/initializers/assets.rb:

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

Restore app/assets/javascripts/application.js:

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

Change javascript_pack_tag to javascript_include_tag in app/views/layout/application.html.erb