webpacker 4.0.0.pre.pre.2 → 4.0.0.pre.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.node-version +1 -0
  3. data/.travis.yml +4 -0
  4. data/CHANGELOG.md +22 -2
  5. data/Gemfile.lock +63 -53
  6. data/README.md +39 -23
  7. data/Rakefile +1 -2
  8. data/docs/cloud9.md +1 -1
  9. data/docs/css.md +1 -1
  10. data/docs/es6.md +4 -4
  11. data/docs/testing.md +1 -1
  12. data/docs/webpack.md +4 -0
  13. data/gemfiles/Gemfile-rails.4.2.x +1 -1
  14. data/gemfiles/Gemfile-rails.5.0.x +1 -1
  15. data/gemfiles/Gemfile-rails.5.1.x +1 -1
  16. data/gemfiles/Gemfile-rails.5.2.x +10 -0
  17. data/lib/install/angular.rb +2 -2
  18. data/lib/install/bin/webpack +6 -2
  19. data/lib/install/bin/webpack-dev-server +6 -2
  20. data/lib/install/coffee.rb +1 -1
  21. data/lib/install/config/.babelrc +35 -12
  22. data/lib/install/config/.browserslistrc +1 -0
  23. data/lib/install/config/.postcssrc.yml +1 -1
  24. data/lib/install/config/webpacker.yml +4 -0
  25. data/lib/install/elm.rb +5 -4
  26. data/lib/install/erb.rb +1 -1
  27. data/lib/install/examples/react/.babelrc +43 -2
  28. data/lib/install/examples/stimulus/application.js +1 -6
  29. data/lib/install/examples/stimulus/controllers/index.js +9 -0
  30. data/lib/install/examples/typescript/tsconfig.json +4 -0
  31. data/lib/install/examples/vue/hello_vue.js +1 -1
  32. data/lib/install/loaders/elm.js +3 -4
  33. data/lib/install/loaders/vue.js +0 -5
  34. data/lib/install/react.rb +5 -4
  35. data/lib/install/template.rb +16 -19
  36. data/lib/install/typescript.rb +2 -2
  37. data/lib/install/vue.rb +3 -3
  38. data/lib/tasks/installers.rake +4 -2
  39. data/lib/tasks/webpacker.rake +1 -0
  40. data/lib/tasks/webpacker/binstubs.rake +3 -2
  41. data/lib/tasks/webpacker/info.rake +19 -0
  42. data/lib/tasks/webpacker/install.rake +3 -2
  43. data/lib/tasks/webpacker/verify_install.rake +1 -4
  44. data/lib/webpacker.rb +1 -0
  45. data/lib/webpacker/commands.rb +0 -1
  46. data/lib/webpacker/compiler.rb +10 -3
  47. data/lib/webpacker/configuration.rb +17 -7
  48. data/lib/webpacker/dev_server.rb +8 -4
  49. data/lib/webpacker/dev_server_proxy.rb +4 -0
  50. data/lib/webpacker/dev_server_runner.rb +17 -9
  51. data/lib/webpacker/env.rb +1 -1
  52. data/lib/webpacker/instance.rb +6 -2
  53. data/lib/webpacker/railtie.rb +15 -6
  54. data/lib/webpacker/runner.rb +3 -3
  55. data/lib/webpacker/version.rb +1 -1
  56. data/lib/webpacker/webpack_runner.rb +2 -2
  57. data/package.json +40 -33
  58. data/package/__tests__/config.js +17 -1
  59. data/package/__tests__/production.js +3 -1
  60. data/package/__tests__/staging.js +4 -2
  61. data/package/__tests__/test.js +4 -1
  62. data/package/config.js +9 -1
  63. data/package/config_types/config_list.js +5 -6
  64. data/package/dev_server.js +1 -1
  65. data/package/env.js +2 -2
  66. data/package/environments/base.js +26 -27
  67. data/package/environments/production.js +10 -1
  68. data/package/utils/__tests__/deep_assign.js +27 -6
  69. data/package/utils/deep_assign.js +1 -1
  70. data/package/utils/deep_merge.js +5 -6
  71. data/package/utils/get_style_rule.js +2 -5
  72. data/package/utils/helpers.js +3 -4
  73. data/package/utils/objectify.js +1 -2
  74. data/test/compiler_test.rb +2 -2
  75. data/test/configuration_test.rb +46 -22
  76. data/test/test_app/config.ru +5 -0
  77. data/test/test_helper.rb +3 -3
  78. data/test/webpacker_test.rb +13 -0
  79. data/webpacker.gemspec +5 -0
  80. data/yarn.lock +2758 -3258
  81. metadata +14 -3
@@ -31,10 +31,10 @@ say "Copying tsconfig.json to the Rails root directory for typescript"
31
31
  copy_file "#{__dir__}/examples/#{example_source}/tsconfig.json", "tsconfig.json"
32
32
 
33
33
  say "Updating webpack paths to include .ts file extension"
34
- insert_into_file Webpacker.config.config_path, " - .ts\n", after: /extensions:\n/
34
+ insert_into_file Webpacker.config.config_path, "- .ts\n".indent(4), after: /extensions:\n/
35
35
 
36
36
  say "Updating webpack paths to include .tsx file extension"
37
- insert_into_file Webpacker.config.config_path, " - .tsx\n", after: /extensions:\n/
37
+ insert_into_file Webpacker.config.config_path, "- .tsx\n".indent(4), after: /extensions:\n/
38
38
 
39
39
  say "Copying the example entry file to #{Webpacker.config.source_entry_path}"
40
40
  copy_file "#{__dir__}/examples/typescript/hello_typescript.ts",
@@ -22,7 +22,7 @@ insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
22
22
  before: "module.exports"
23
23
 
24
24
  say "Updating webpack paths to include .vue file extension"
25
- insert_into_file Webpacker.config.config_path, " - .vue\n", after: /extensions:\n/
25
+ insert_into_file Webpacker.config.config_path, "- .vue\n".indent(4), after: /extensions:\n/
26
26
 
27
27
  say "Copying the example entry file to #{Webpacker.config.source_entry_path}"
28
28
  copy_file "#{__dir__}/examples/vue/hello_vue.js",
@@ -40,9 +40,9 @@ if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR > 1
40
40
  say "This can be done in Rails 5.2+ for development environment in the CSP initializer", :yellow
41
41
  say "config/initializers/content_security_policy.rb with a snippet like this:", :yellow
42
42
  say "if Rails.env.development?", :yellow
43
- say " p.script_src :self, :https, :unsafe_eval", :yellow
43
+ say " policy.script_src :self, :https, :unsafe_eval", :yellow
44
44
  say "else", :yellow
45
- say " p.script_src :self, :https", :yellow
45
+ say " policy.script_src :self, :https", :yellow
46
46
  say "end", :yellow
47
47
  end
48
48
 
@@ -13,6 +13,8 @@ dependencies = {
13
13
  "Angular": [:typescript]
14
14
  }
15
15
 
16
+ bin_path = ENV["BUNDLE_BIN"] || "./bin"
17
+
16
18
  namespace :webpacker do
17
19
  namespace :install do
18
20
  installers.each do |name, task_name|
@@ -21,9 +23,9 @@ namespace :webpacker do
21
23
  template = File.expand_path("../install/#{task_name}.rb", __dir__)
22
24
  base_path =
23
25
  if Rails::VERSION::MAJOR >= 5
24
- "#{RbConfig.ruby} ./bin/rails app:template"
26
+ "#{RbConfig.ruby} #{bin_path}/rails app:template"
25
27
  else
26
- "#{RbConfig.ruby} ./bin/rake rails:template"
28
+ "#{RbConfig.ruby} #{bin_path}/rake rails:template"
27
29
  end
28
30
 
29
31
  dependencies[name] ||= []
@@ -1,4 +1,5 @@
1
1
  tasks = {
2
+ "webpacker:info" => "Provides information on Webpacker's environment",
2
3
  "webpacker:install" => "Installs and setup webpack with Yarn",
3
4
  "webpacker:compile" => "Compiles webpack bundles based on environment",
4
5
  "webpacker:clobber" => "Removes the webpack compiled output directory",
@@ -1,12 +1,13 @@
1
1
  binstubs_template_path = File.expand_path("../../install/binstubs.rb", __dir__).freeze
2
+ bin_path = ENV["BUNDLE_BIN"] || "./bin"
2
3
 
3
4
  namespace :webpacker do
4
5
  desc "Installs Webpacker binstubs in this application"
5
6
  task binstubs: [:check_node, :check_yarn] do
6
7
  if Rails::VERSION::MAJOR >= 5
7
- exec "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{binstubs_template_path}"
8
+ exec "#{RbConfig.ruby} #{bin_path}/rails app:template LOCATION=#{binstubs_template_path}"
8
9
  else
9
- exec "#{RbConfig.ruby} ./bin/rake rails:template LOCATION=#{binstubs_template_path}"
10
+ exec "#{RbConfig.ruby} #{bin_path}/rake rails:template LOCATION=#{binstubs_template_path}"
10
11
  end
11
12
  end
12
13
  end
@@ -0,0 +1,19 @@
1
+ require "webpacker/version"
2
+
3
+ namespace :webpacker do
4
+ desc "Provide information on Webpacker's environment"
5
+ task :info do
6
+ $stdout.puts "Ruby: #{`ruby --version`}"
7
+ $stdout.puts "Rails: #{Rails.version}"
8
+ $stdout.puts "Webpacker: #{Webpacker::VERSION}"
9
+ $stdout.puts "Node: #{`node --version`}"
10
+ $stdout.puts "Yarn: #{`yarn --version`}"
11
+
12
+ $stdout.puts "\n"
13
+ $stdout.puts "@rails/webpacker: \n#{`npm list @rails/webpacker version`}"
14
+
15
+ $stdout.puts "Is bin/webpack present?: #{File.exist? 'bin/webpack'}"
16
+ $stdout.puts "Is bin/webpack-dev-server present?: #{File.exist? 'bin/webpack-dev-server'}"
17
+ $stdout.puts "Is bin/yarn present?: #{File.exist? 'bin/yarn'}"
18
+ end
19
+ end
@@ -1,12 +1,13 @@
1
1
  install_template_path = File.expand_path("../../install/template.rb", __dir__).freeze
2
+ bin_path = ENV["BUNDLE_BIN"] || "./bin"
2
3
 
3
4
  namespace :webpacker do
4
5
  desc "Install Webpacker in this application"
5
6
  task install: [:check_node, :check_yarn] do
6
7
  if Rails::VERSION::MAJOR >= 5
7
- exec "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{install_template_path}"
8
+ exec "#{RbConfig.ruby} #{bin_path}/rails app:template LOCATION=#{install_template_path}"
8
9
  else
9
- exec "#{RbConfig.ruby} ./bin/rake rails:template LOCATION=#{install_template_path}"
10
+ exec "#{RbConfig.ruby} #{bin_path}/rake rails:template LOCATION=#{install_template_path}"
10
11
  end
11
12
  end
12
13
  end
@@ -3,10 +3,7 @@ require "webpacker/configuration"
3
3
  namespace :webpacker do
4
4
  desc "Verifies if Webpacker is installed"
5
5
  task verify_install: [:check_node, :check_yarn, :check_binstubs] do
6
- if Webpacker.config.config_path.exist?
7
- $stdout.puts "Webpacker is installed 🎉 🍰"
8
- $stdout.puts "Using #{Webpacker.config.config_path} file for setting up webpack paths"
9
- else
6
+ unless Webpacker.config.config_path.exist?
10
7
  $stderr.puts "Configuration config/webpacker.yml file not found. \n"\
11
8
  "Make sure webpacker:install is run successfully before " \
12
9
  "running dependent tasks"
@@ -1,4 +1,5 @@
1
1
  require "active_support/core_ext/module/attribute_accessors"
2
+ require "active_support/core_ext/string/inquiry"
2
3
  require "active_support/logger"
3
4
  require "active_support/tagged_logging"
4
5
 
@@ -11,7 +11,6 @@ class Webpacker::Commands
11
11
  end
12
12
 
13
13
  def bootstrap
14
- config.refresh
15
14
  manifest.refresh
16
15
  end
17
16
 
@@ -40,11 +40,17 @@ class Webpacker::Compiler
40
40
  private
41
41
  def last_compilation_digest
42
42
  compilation_digest_path.read if compilation_digest_path.exist? && config.public_manifest_path.exist?
43
+ rescue Errno::ENOENT, Errno::ENOTDIR
43
44
  end
44
45
 
45
46
  def watched_files_digest
46
47
  files = Dir[*default_watched_paths, *watched_paths].reject { |f| File.directory?(f) }
47
- Digest::SHA1.hexdigest(files.map { |f| "#{File.basename(f)}/#{File.mtime(f).utc.to_i}" }.join("/"))
48
+ file_ids = if ENV["CI"]
49
+ files.sort.map { |f| "#{File.basename(f)}/#{Digest::SHA1.file(f).hexdigest}" }
50
+ else
51
+ files.map { |f| "#{File.basename(f)}/#{File.mtime(f).utc.to_i}" }
52
+ end
53
+ Digest::SHA1.hexdigest(file_ids.join("/"))
48
54
  end
49
55
 
50
56
  def record_compilation_digest
@@ -54,12 +60,13 @@ class Webpacker::Compiler
54
60
 
55
61
  def remove_compilation_digest
56
62
  compilation_digest_path.delete if compilation_digest_path.exist?
63
+ rescue Errno::ENOENT, Errno::ENOTDIR
57
64
  end
58
65
 
59
66
  def run_webpack
60
67
  logger.info "Compiling…"
61
68
 
62
- sterr, stdout, status = Open3.capture3(webpack_env, "#{RbConfig.ruby} ./bin/webpack")
69
+ stdout, sterr , status = Open3.capture3(webpack_env, "#{RbConfig.ruby} #{@webpacker.root_path}/bin/webpack")
63
70
 
64
71
  if status.success?
65
72
  logger.info "Compiled all packs in #{config.public_output_path}"
@@ -80,7 +87,7 @@ class Webpacker::Compiler
80
87
  end
81
88
 
82
89
  def compilation_digest_path
83
- config.cache_path.join(".last-compilation-digest-#{Webpacker.env}")
90
+ config.cache_path.join("last-compilation-digest-#{Webpacker.env}")
84
91
  end
85
92
 
86
93
  def webpack_env
@@ -1,12 +1,14 @@
1
- class Webpacker::Configuration
2
- delegate :root_path, :config_path, :env, to: :@webpacker
1
+ require "yaml"
2
+ require "active_support/core_ext/hash/keys"
3
+ require "active_support/core_ext/hash/indifferent_access"
3
4
 
4
- def initialize(webpacker)
5
- @webpacker = webpacker
6
- end
5
+ class Webpacker::Configuration
6
+ attr_reader :root_path, :config_path, :env
7
7
 
8
- def refresh
9
- @data = load
8
+ def initialize(root_path:, config_path:, env:)
9
+ @root_path = root_path
10
+ @config_path = config_path
11
+ @env = env
10
12
  end
11
13
 
12
14
  def dev_server
@@ -57,6 +59,14 @@ class Webpacker::Configuration
57
59
  fetch(:extensions)
58
60
  end
59
61
 
62
+ def check_yarn_integrity=(value)
63
+ data[:check_yarn_integrity] = value
64
+ end
65
+
66
+ def check_yarn_integrity?
67
+ fetch(:check_yarn_integrity)
68
+ end
69
+
60
70
  private
61
71
  def fetch(key)
62
72
  data.fetch(key, defaults[key])
@@ -3,10 +3,10 @@ class Webpacker::DevServer
3
3
  # Webpacker.dev_server.connect_timeout = 1
4
4
  cattr_accessor(:connect_timeout) { 0.01 }
5
5
 
6
- delegate :config, to: :@webpacker
6
+ attr_reader :config
7
7
 
8
- def initialize(webpacker)
9
- @webpacker = webpacker
8
+ def initialize(config)
9
+ @config = config
10
10
  end
11
11
 
12
12
  def running?
@@ -54,12 +54,16 @@ class Webpacker::DevServer
54
54
  "#{host}:#{port}"
55
55
  end
56
56
 
57
+ def pretty?
58
+ fetch(:pretty)
59
+ end
60
+
57
61
  private
58
62
  def fetch(key)
59
63
  ENV["WEBPACKER_DEV_SERVER_#{key.upcase}"] || config.dev_server.fetch(key, defaults[key])
60
64
  end
61
65
 
62
66
  def defaults
63
- config.send(:defaults)[:dev_server]
67
+ config.send(:defaults)[:dev_server] || {}
64
68
  end
65
69
  end
@@ -11,6 +11,10 @@ class Webpacker::DevServerProxy < Rack::Proxy
11
11
  def perform_request(env)
12
12
  if env["PATH_INFO"].start_with?("/#{public_output_uri_path}") && Webpacker.dev_server.running?
13
13
  env["HTTP_HOST"] = env["HTTP_X_FORWARDED_HOST"] = env["HTTP_X_FORWARDED_SERVER"] = Webpacker.dev_server.host_with_port
14
+ env["HTTP_X_FORWARDED_PROTO"] = env["HTTP_X_FORWARDED_SCHEME"] = Webpacker.dev_server.protocol
15
+ unless Webpacker.dev_server.https?
16
+ env["HTTPS"] = env["HTTP_X_FORWARDED_SSL"] = "off"
17
+ end
14
18
  env["SCRIPT_NAME"] = ""
15
19
 
16
20
  super(env)
@@ -1,6 +1,7 @@
1
1
  require "shellwords"
2
- require "yaml"
3
2
  require "socket"
3
+ require "webpacker/configuration"
4
+ require "webpacker/dev_server"
4
5
  require "webpacker/runner"
5
6
 
6
7
  module Webpacker
@@ -13,15 +14,22 @@ module Webpacker
13
14
 
14
15
  private
15
16
  def load_config
16
- @config_file = File.join(@app_path, "config/webpacker.yml")
17
- dev_server = YAML.load_file(@config_file)[ENV["RAILS_ENV"]]["dev_server"]
17
+ app_root = Pathname.new(@app_path)
18
18
 
19
- @hostname = dev_server["host"]
20
- @port = dev_server["port"]
21
- @pretty = dev_server.fetch("pretty", true)
19
+ config = Configuration.new(
20
+ root_path: app_root,
21
+ config_path: app_root.join("config/webpacker.yml"),
22
+ env: ENV["RAILS_ENV"]
23
+ )
24
+
25
+ dev_server = DevServer.new(config)
26
+
27
+ @hostname = dev_server.host
28
+ @port = dev_server.port
29
+ @pretty = dev_server.pretty?
22
30
 
23
31
  rescue Errno::ENOENT, NoMethodError
24
- $stdout.puts "webpack dev_server configuration not found in #{@config_file}[#{ENV["RAILS_ENV"]}]."
32
+ $stdout.puts "webpack dev_server configuration not found in #{config.config_path}[#{ENV["RAILS_ENV"]}]."
25
33
  $stdout.puts "Please run bundle exec rails webpacker:install to install Webpacker"
26
34
  exit!
27
35
  end
@@ -36,9 +44,9 @@ module Webpacker
36
44
  end
37
45
 
38
46
  def execute_cmd
39
- env = { "NODE_PATH" => @node_modules_path.shellescape }
47
+ env = Webpacker::Compiler.env
40
48
  cmd = [
41
- "#{@node_modules_path}/.bin/webpack-dev-server",
49
+ "#{@node_modules_bin_path}/webpack-dev-server",
42
50
  "--config", @webpack_config
43
51
  ]
44
52
  cmd += ["--progress", "--color"] if @pretty
@@ -13,7 +13,7 @@ class Webpacker::Env
13
13
 
14
14
  def inquire
15
15
  fallback_env_warning unless current
16
- (current || DEFAULT).inquiry
16
+ current || DEFAULT.inquiry
17
17
  end
18
18
 
19
19
  private
@@ -12,7 +12,11 @@ class Webpacker::Instance
12
12
  end
13
13
 
14
14
  def config
15
- @config ||= Webpacker::Configuration.new self
15
+ @config ||= Webpacker::Configuration.new(
16
+ root_path: root_path,
17
+ config_path: config_path,
18
+ env: env
19
+ )
16
20
  end
17
21
 
18
22
  def compiler
@@ -20,7 +24,7 @@ class Webpacker::Instance
20
24
  end
21
25
 
22
26
  def dev_server
23
- @dev_server ||= Webpacker::DevServer.new self
27
+ @dev_server ||= Webpacker::DevServer.new config
24
28
  end
25
29
 
26
30
  def manifest
@@ -6,7 +6,12 @@ require "webpacker/dev_server_proxy"
6
6
  class Webpacker::Engine < ::Rails::Engine
7
7
  # Allows Webpacker config values to be set via Rails env config files
8
8
  config.webpacker = ActiveSupport::OrderedOptions.new
9
- config.webpacker.check_yarn_integrity = false
9
+
10
+ initializer "webpacker.set_configs" do |app|
11
+ if app.config.webpacker.key?(:check_yarn_integrity)
12
+ Webpacker.config.check_yarn_integrity = app.config.webpacker.check_yarn_integrity
13
+ end
14
+ end
10
15
 
11
16
  # ================================
12
17
  # Check Yarn Integrity Initializer
@@ -24,7 +29,7 @@ class Webpacker::Engine < ::Rails::Engine
24
29
  # - edit config/environments/production.rb
25
30
  # - add `config.webpacker.check_yarn_integrity = true`
26
31
  initializer "webpacker.yarn_check" do |app|
27
- if File.exist?("yarn.lock") && app.config.webpacker.check_yarn_integrity
32
+ if File.exist?("yarn.lock") && Webpacker.config.config_path.exist? && Webpacker.config.check_yarn_integrity?
28
33
  output = `yarn check --integrity 2>&1`
29
34
 
30
35
  unless $?.success?
@@ -34,8 +39,8 @@ class Webpacker::Engine < ::Rails::Engine
34
39
  $stderr.puts " Please run `yarn install` to update."
35
40
  $stderr.puts "========================================"
36
41
  $stderr.puts "\n\n"
37
- $stderr.puts "To disable this check, please add `config.webpacker.check_yarn_integrity = false`"
38
- $stderr.puts "to your Rails development config file (config/environments/development.rb)."
42
+ $stderr.puts "To disable this check, please change `check_yarn_integrity`"
43
+ $stderr.puts "to `false` in your webpacker config file (config/webpacker.yml)."
39
44
  $stderr.puts "\n\n"
40
45
  $stderr.puts output
41
46
  $stderr.puts "\n\n"
@@ -46,7 +51,8 @@ class Webpacker::Engine < ::Rails::Engine
46
51
  end
47
52
 
48
53
  initializer "webpacker.proxy" do |app|
49
- if Rails.env.development?
54
+ insert_middleware = Webpacker.config.dev_server.present? rescue nil
55
+ if insert_middleware
50
56
  app.middleware.insert_before 0,
51
57
  Rails::VERSION::MAJOR >= 5 ?
52
58
  Webpacker::DevServerProxy : "Webpacker::DevServerProxy", ssl_verify_none: true
@@ -76,7 +82,10 @@ class Webpacker::Engine < ::Rails::Engine
76
82
  initializer "webpacker.bootstrap" do
77
83
  if defined?(Rails::Server) || defined?(Rails::Console)
78
84
  Webpacker.bootstrap
79
- Spring.after_fork { Webpacker.bootstrap } if defined?(Spring)
85
+ if defined?(Spring)
86
+ Spring.after_fork { Webpacker.bootstrap }
87
+ Spring.watch(Webpacker.config.config_path)
88
+ end
80
89
  end
81
90
  end
82
91
  end
@@ -9,9 +9,9 @@ module Webpacker
9
9
  def initialize(argv)
10
10
  @argv = argv
11
11
 
12
- @app_path = File.expand_path(".", Dir.pwd)
13
- @node_modules_path = File.join(@app_path, "node_modules")
14
- @webpack_config = File.join(@app_path, "config/webpack/#{ENV["NODE_ENV"]}.js")
12
+ @app_path = File.expand_path(".", Dir.pwd)
13
+ @node_modules_bin_path = ENV["WEBPACKER_NODE_MODULES_BIN_PATH"] || `yarn bin`.chomp
14
+ @webpack_config = File.join(@app_path, "config/webpack/#{ENV["NODE_ENV"]}.js")
15
15
 
16
16
  unless File.exist?(@webpack_config)
17
17
  $stderr.puts "webpack config #{@webpack_config} not found, please run 'bundle exec rails webpacker:install' to install Webpacker with default configs or add the missing config file for your custom environment."
@@ -1,4 +1,4 @@
1
1
  module Webpacker
2
2
  # Change the version in package.json too, please!
3
- VERSION = "4.0.0-pre.2".freeze
3
+ VERSION = "4.0.0.pre.3".freeze
4
4
  end
@@ -4,8 +4,8 @@ require "webpacker/runner"
4
4
  module Webpacker
5
5
  class WebpackRunner < Webpacker::Runner
6
6
  def run
7
- env = { "NODE_PATH" => @node_modules_path.shellescape }
8
- cmd = [ "#{@node_modules_path}/.bin/webpack", "--config", @webpack_config ] + @argv
7
+ env = Webpacker::Compiler.env
8
+ cmd = [ "#{@node_modules_bin_path}/webpack", "--config", @webpack_config ] + @argv
9
9
 
10
10
  Dir.chdir(@app_path) do
11
11
  exec env, *cmd
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rails/webpacker",
3
- "version": "4.0.0-pre.2",
3
+ "version": "4.0.0-pre.3",
4
4
  "description": "Use webpack to manage app-like JavaScript modules in Rails",
5
5
  "main": "package/index.js",
6
6
  "files": [
@@ -8,43 +8,50 @@
8
8
  "lib/install/config/webpacker.yml"
9
9
  ],
10
10
  "engines": {
11
- "node": ">=6.0.0",
12
- "yarn": ">=0.25.2"
11
+ "node": ">=6.14.0",
12
+ "yarn": ">=1.0.0"
13
13
  },
14
14
  "dependencies": {
15
- "babel-core": "^6.26.0",
16
- "babel-loader": "^7.1.3",
17
- "babel-plugin-syntax-dynamic-import": "^6.18.0",
18
- "babel-plugin-transform-class-properties": "^6.24.1",
19
- "babel-plugin-transform-object-rest-spread": "^6.26.0",
20
- "babel-polyfill": "^6.26.0",
21
- "babel-preset-env": "^1.6.1",
15
+ "@babel/core": "^7.0.0",
16
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
17
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
18
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
19
+ "@babel/plugin-transform-destructuring": "^7.0.0",
20
+ "@babel/plugin-transform-regenerator": "^7.0.0",
21
+ "@babel/plugin-transform-runtime": "^7.0.0",
22
+ "@babel/polyfill": "^7.0.0",
23
+ "@babel/preset-env": "^7.0.0",
24
+ "@babel/runtime": "^7.0.0",
25
+ "babel-core": "^7.0.0-bridge",
26
+ "babel-loader": "^8.0.0",
22
27
  "case-sensitive-paths-webpack-plugin": "^2.1.2",
23
- "compression-webpack-plugin": "^1.1.11",
24
- "css-loader": "^0.28.11",
25
- "file-loader": "^1.1.11",
26
- "glob": "^7.1.2",
27
- "js-yaml": "^3.11.0",
28
- "mini-css-extract-plugin": "^0.4.0",
29
- "node-sass": "^4.8.3",
28
+ "compression-webpack-plugin": "^1.1.12",
29
+ "css-loader": "^1.0.0",
30
+ "file-loader": "^2.0.0",
31
+ "glob": "^7.1.3",
32
+ "js-yaml": "^3.12.0",
33
+ "mini-css-extract-plugin": "^0.4.2",
34
+ "node-sass": "^4.9.3",
35
+ "optimize-css-assets-webpack-plugin": "^5.0.1",
30
36
  "path-complete-extname": "^1.0.0",
31
- "postcss-cssnext": "^3.1.0",
32
- "postcss-import": "^11.1.0",
33
- "postcss-loader": "^2.1.3",
34
- "sass-loader": "^6.0.7",
35
- "style-loader": "^0.20.3",
36
- "uglifyjs-webpack-plugin": "^1.2.4",
37
- "webpack": "^4.4.1",
38
- "webpack-assets-manifest": "^3.0.1",
39
- "webpack-cli": "^2.0.13"
37
+ "postcss-import": "^12.0.0",
38
+ "postcss-loader": "^3.0.0",
39
+ "postcss-preset-env": "^5.3.0",
40
+ "sass-loader": "^7.1.0",
41
+ "style-loader": "^0.23.0",
42
+ "uglifyjs-webpack-plugin": "^1.3.0",
43
+ "webpack": "^4.17.1",
44
+ "webpack-assets-manifest": "^3.0.2",
45
+ "webpack-cli": "^3.1.0",
46
+ "webpack-sources": "^1.2.0"
40
47
  },
41
48
  "devDependencies": {
42
- "eslint": "^4.18.2",
43
- "eslint-config-airbnb": "^16.1.0",
44
- "eslint-plugin-import": "^2.9.0",
45
- "eslint-plugin-jsx-a11y": "^6.0.3",
46
- "eslint-plugin-react": "^7.7.0",
47
- "jest": "^22.4.2"
49
+ "eslint": "^5.4.0",
50
+ "eslint-config-airbnb": "^17.1.0",
51
+ "eslint-plugin-import": "^2.14.0",
52
+ "eslint-plugin-jsx-a11y": "^6.1.1",
53
+ "eslint-plugin-react": "^7.11.1",
54
+ "jest": "^23.5.0"
48
55
  },
49
56
  "jest": {
50
57
  "testRegex": "(/__tests__/.*|(\\.|/))\\.jsx?$",
@@ -54,7 +61,7 @@
54
61
  },
55
62
  "scripts": {
56
63
  "test": "jest",
57
- "lint": "eslint {package,lib}/"
64
+ "lint": "eslint package/"
58
65
  },
59
66
  "repository": {
60
67
  "type": "git",