Skip to content

Instantly share code, notes, and snippets.

@dkarter
Created May 30, 2018 17:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dkarter/3725e2694398c3bab30a1012d9169ccb to your computer and use it in GitHub Desktop.
Save dkarter/3725e2694398c3bab30a1012d9169ccb to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
# frozen_string_literal: true
$stdout.sync = true
require 'shellwords'
require 'yaml'
ENV['RAILS_ENV'] ||= 'development'
RAILS_ENV = ENV['RAILS_ENV']
ENV['NODE_ENV'] ||= RAILS_ENV
NODE_ENV = ENV['NODE_ENV']
APP_PATH = File.expand_path('../', __dir__)
CONFIG_FILE = File.join(APP_PATH, 'config/webpacker.yml')
NODE_MODULES_PATH = File.join(APP_PATH, 'node_modules')
WEBPACK_CONFIG = File.join(APP_PATH, 'config/webpack/development.js')
def args(key)
index = ARGV.index(key)
index ? ARGV[index + 1] : nil
end
begin
dev_server = YAML.load_file(CONFIG_FILE)['development']['dev_server']
DEV_SERVER_HOST = "http#{'s' if args('--https') || dev_server['https']}://#{args('--host') || dev_server['host']}:#{args('--port') || dev_server['port']}"
rescue Errno::ENOENT, NoMethodError
puts "Webpack dev_server configuration not found in #{CONFIG_FILE}."
puts 'Please run bundle exec rails webpacker:install to install webpacker'
exit!
end
newenv = {
'NODE_PATH' => NODE_MODULES_PATH.shellescape,
'ASSET_HOST' => DEV_SERVER_HOST.shellescape,
}.freeze
cmdline = ['yarn', 'webpack-dev-server', WEBPACK_CONFIG] + ARGV
Dir.chdir(APP_PATH) do
exec newenv, *cmdline
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment