Custom directory for Webpacker in Rails apps

Starting from Rails 6, Webpacker is the default JavaScript compiler for Rails apps.

By default, Rails recommends adding the Webpacker related JavaScript code in app/javascript directory. A lot of people wanted to place the JavaScript code in custom directory instead of app/javascript. It is now possible to customize it.

You just need to set the source_path in the config/webpacker.yml to the directory relative to the app folder where you want to place the Webpacker JavaScript code.

# config/webpacker.yml

default: &default
  source_path: app/frontend

This change is available in Webpacker gem from version 4.1.0 onwards and in Rails from Rails 6.0.1 onwards.

With this change, we can place our JavaScript code in any of the custom directory of our choice under the app directory, configure it via the source_path setting in the webpacker.yml and that's it.

Once we have configured this directory, then the subsequent Webpacker commands use this directory as reference.

✗ bundle exec rails webpacker:install:react
Copying babel.config.js to app root directory
       force  babel.config.js
Copying react example entry file to /Users/prathamesh/Projects/fun/frontend_rails_app/app/frontend/packs
      create  app/frontend/packs/hello_react.jsx
Updating webpack paths to include .jsx file extension
      insert  config/webpacker.yml

Want to know more about Webpacker and Rails, check out my other blog posts on this topic or subscribe to my newsletter.