-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
webpack_runner.rb
58 lines (48 loc) · 1.18 KB
/
webpack_runner.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
require "shellwords"
require "webpacker/runner"
module Webpacker
class WebpackRunner < Webpacker::Runner
WEBPACK_COMMANDS = [
"help",
"h",
"--help",
"-h",
"version",
"v",
"--version",
"-v",
"info",
"i"
].freeze
def run
env = Webpacker::Compiler.env
env["WEBPACKER_CONFIG"] = @webpacker_config
cmd = if node_modules_bin_exist?
["#{@node_modules_bin_path}/webpack"]
else
["yarn", "webpack"]
end
if @argv.delete "--debug-webpacker"
cmd = ["node", "--inspect-brk"] + cmd
end
if @argv.delete "--trace-deprecation"
cmd = ["node", "--trace-deprecation"] + cmd
end
if @argv.delete "--no-deprecation"
cmd = ["node", "--no-deprecation"] + cmd
end
# Webpack commands are not compatible with --config option.
if (@argv & WEBPACK_COMMANDS).empty?
cmd += ["--config", @webpack_config]
end
cmd += @argv
Dir.chdir(@app_path) do
Kernel.exec env, *cmd
end
end
private
def node_modules_bin_exist?
File.exist?("#{@node_modules_bin_path}/webpack")
end
end
end