Class: WebpackRails::Task
- Inherits:
-
NodeTask
- Object
- NodeTask
- WebpackRails::Task
- Defined in:
- lib/webpack_rails/task.rb
Defined Under Namespace
Classes: Error
Class Method Summary collapse
- .app_node_path ⇒ Object
- .build_once(webpack_task_config) ⇒ Object
- .root_dir ⇒ Object
- .run_webpack(opts = {}) ⇒ Object
- .webpack_gem_dir ⇒ Object
- .webpack_task_dev_server_script ⇒ Object
- .webpack_task_opts(opts) ⇒ Object
- .webpack_task_script(opts) ⇒ Object
- .webpack_task_watch_script ⇒ Object
- .with_app_node_path ⇒ Object
- .working_dir ⇒ Object
Class Method Details
.app_node_path ⇒ Object
49 50 51 |
# File 'lib/webpack_rails/task.rb', line 49 def app_node_path @app_node_path ||= File.join(root_dir, 'node_modules') end |
.build_once(webpack_task_config) ⇒ Object
64 65 66 67 68 69 |
# File 'lib/webpack_rails/task.rb', line 64 def build_once(webpack_task_config) WebpackRails::Task.with_app_node_path do webpack_cmd_script = `#{WebpackRails::Task.node_command} -e "process.stdout.write(require.resolve('webpack/bin/webpack.js'))"` system "#{WebpackRails::Task.node_command} #{webpack_cmd_script} --config #{webpack_task_config[:webpack_config_file]}" end end |
.root_dir ⇒ Object
17 18 19 |
# File 'lib/webpack_rails/task.rb', line 17 def root_dir @root_dir ||= defined?(Rails) ? Rails.root.to_s : Dir.pwd end |
.run_webpack(opts = {}) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/webpack_rails/task.rb', line 71 def run_webpack(opts = {}) return if ENV['DISABLE_WEBPACK'] result = nil task_duration = Benchmark.realtime do with_app_node_path do begin task = self.new(webpack_task_script(opts)) result = task.run(webpack_task_opts(opts)) rescue NodeTask::Error => e raise self::Error.new(e) end end end task_duration_ms = task_duration * 1000 if defined?(Rails) && result if opts[:dev_server] && result[:started] Rails.logger.info("Started webpack-dev-server in #{task_duration_ms.round(0)}ms") end end result end |
.webpack_gem_dir ⇒ Object
25 26 27 |
# File 'lib/webpack_rails/task.rb', line 25 def webpack_gem_dir @webpack_gem_dir ||= File.dirname(File.(__FILE__)) end |
.webpack_task_dev_server_script ⇒ Object
33 34 35 |
# File 'lib/webpack_rails/task.rb', line 33 def webpack_task_dev_server_script @webpack_task_dev_server_script ||= File.join(webpack_gem_dir, 'webpack-task-dev-server.js') end |
.webpack_task_opts(opts) ⇒ Object
43 44 45 46 47 |
# File 'lib/webpack_rails/task.rb', line 43 def webpack_task_opts(opts) opts.merge( webpack_config_file: opts[:webpack_config_file] ? opts[:webpack_config_file].to_s : nil, ) end |
.webpack_task_script(opts) ⇒ Object
37 38 39 40 41 |
# File 'lib/webpack_rails/task.rb', line 37 def webpack_task_script(opts) return webpack_task_watch_script if opts[:watch] return webpack_task_dev_server_script if opts[:dev_server] fail "can't determine which task to run" end |
.webpack_task_watch_script ⇒ Object
29 30 31 |
# File 'lib/webpack_rails/task.rb', line 29 def webpack_task_watch_script @webpack_task_watch_script ||= File.join(webpack_gem_dir, 'webpack-task-watch.js') end |
.with_app_node_path ⇒ Object
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/webpack_rails/task.rb', line 53 def with_app_node_path prev_node_path = ENV['NODE_PATH'] ENV['NODE_PATH'] = app_node_path return_value = nil Dir.chdir(root_dir) do return_value = yield end ENV['NODE_PATH'] = prev_node_path return_value end |
.working_dir ⇒ Object
21 22 23 |
# File 'lib/webpack_rails/task.rb', line 21 def working_dir @working_dir ||= _make_working_dir end |