Hauler
Replaces the default Rails asset management (Sprockets) with the superior Webpack.
Improve your DX (Developer Experience) by developing your application UI using JavaScript Components.
- Setup
- New Rails Application
- Existing Rails Application
- Installation
- Update
- Usage
Preparation
New Rails Application
Create your new application skipping all javascript assets and sprockets (where "my_app" refers to your app name).
rails new my_app --skip-javascript --skip-turbolinks --skip-sprockets
Existing Rails Applications
Remove sprockets from your application loaded modules inside the config/application.rb
file.
If you used the default Rails generator, then replace the line require 'rails/all'
with:
require 'rails'
# Pick the frameworks you want:
require 'active_model/railtie'
require 'active_job/railtie'
require 'active_record/railtie'
require 'action_controller/railtie'
require 'action_mailer/railtie'
require 'action_view/railtie'
# require 'sprockets/railtie'
require 'rails/test_unit/railtie'
If you used a custom Rails app generation, just remove the line:
require 'sprockets/railtie'
Installation
Add this line to your application's Gemfile:
gem 'hauler'
And then execute:
bundle
bin/rails generate hauler:install
Set your application config.action_controller.asset_host
using an environment variable.
export ASSET_HOST="//localhost:8080"
# config/application.rb
config.action_controller.asset_host = ENV.fetch('ASSET_HOST')
Update
bin/rails generate hauler:install
Usage
Run your rails server normally:
bin/rails server
In a different terminal window run Webpack dev server:
npm start
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/guzart/hauler.
License
The gem is available as open source under the terms of the MIT License.
TODO
- add "start" script that runs the hauler.js binary
- install React dynamically, install if present or ask otherwise
- install Sass dynamically, install if present or ask otherwise
- add sensible defaults to the config template
- should be able to append loaders or override them
- one place for editing the asset host