lib/tasks/assets.rake in react_on_rails-12.0.0.pre.beta.2 vs lib/tasks/assets.rake in react_on_rails-12.0.0.pre.beta.3
- old
+ new
@@ -5,14 +5,12 @@
require "active_support"
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development"
ENV["NODE_ENV"] ||= "development"
-webpacker_webpack_config_abs_path = File.join(Rails.root, "config/webpack/#{ENV["NODE_ENV"]}.js")
-webpack_config_path = Pathname.new(webpacker_webpack_config_abs_path).relative_path_from(Rails.root).to_s
-unless File.exists?(webpacker_webpack_config_abs_path)
+unless ReactOnRails::WebpackerUtils.webpacker_webpack_production_config_exists?
if Rake::Task.task_defined?("assets:precompile")
Rake::Task["assets:precompile"].enhance do
Rake::Task["react_on_rails:assets:webpack"].invoke
puts "Invoking task wepacker:clean from React on Rails"
Rake::Task["webpacker:clean"].invoke
@@ -24,22 +22,31 @@
# Sprockets independent tasks
namespace :react_on_rails do
namespace :assets do
desc <<-DESC.strip_heredoc
- Compile assets with webpack
- Uses command defined with ReactOnRails.configuration.build_production_command
-
- sh "#{ReactOnRails::Utils.prepend_cd_node_modules_directory('<ReactOnRails.configuration.build_production_command>')}"
-
- Note: This command is not automatically added to assets:precompile if the rails/webpacker
- configuration file #{webpack_config_path} exists.
+ Compile assets with webpack
+ Uses command defined with ReactOnRails.configuration.build_production_command
+ sh "#{ReactOnRails::Utils.prepend_cd_node_modules_directory('<ReactOnRails.configuration.build_production_command>')}"
+ Note: This command is not automatically added to assets:precompile if the rails/webpacker
+ configuration file config/webpack/production.js exists.
DESC
task webpack: :locale do
if ReactOnRails.configuration.build_production_command.present?
sh ReactOnRails::Utils.prepend_cd_node_modules_directory(
ReactOnRails.configuration.build_production_command
).to_s
+ else
+ msg = <<~MSG
+ React on Rails is aborting webpack compilation from task react_on_rails:assets:webpack
+ because you do not have the `config.build_production_command` defined.
+
+ Note, this task may have run as part of `assets:precompile`. If file
+ config/webpack/production.js does not exist, React on Rails will modify
+ the default `asset:precompile` to run task `react_on_rails:assets:webpack`.
+ MSG
+ puts Rainbow(msg).red
+ exit!(1)
end
end
end
end