webpacker 3.6.0 → 4.0.0.pre.pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -3
  3. data/CHANGELOG.md +6 -43
  4. data/Gemfile.lock +48 -58
  5. data/README.md +11 -11
  6. data/Rakefile +2 -1
  7. data/docs/cloud9.md +1 -1
  8. data/docs/css.md +0 -10
  9. data/docs/troubleshooting.md +2 -2
  10. data/lib/install/angular.rb +2 -2
  11. data/lib/install/bin/webpack +1 -1
  12. data/lib/install/bin/webpack-dev-server +1 -1
  13. data/lib/install/config/webpacker.yml +1 -2
  14. data/lib/install/elm.rb +3 -4
  15. data/lib/install/examples/elm/Main.elm +4 -5
  16. data/lib/install/examples/elm/hello_elm.js +2 -6
  17. data/lib/install/examples/vue/hello_vue.js +1 -1
  18. data/lib/install/loaders/elm.js +4 -3
  19. data/lib/install/loaders/vue.js +1 -3
  20. data/lib/install/template.rb +3 -3
  21. data/lib/install/typescript.rb +1 -1
  22. data/lib/install/vue.rb +13 -4
  23. data/lib/tasks/webpacker.rake +0 -1
  24. data/lib/tasks/webpacker/yarn_install.rake +1 -1
  25. data/lib/webpacker.rb +0 -1
  26. data/lib/webpacker/compiler.rb +2 -4
  27. data/lib/webpacker/configuration.rb +3 -13
  28. data/lib/webpacker/dev_server.rb +4 -8
  29. data/lib/webpacker/dev_server_proxy.rb +0 -4
  30. data/lib/webpacker/dev_server_runner.rb +7 -15
  31. data/lib/webpacker/env.rb +1 -1
  32. data/lib/webpacker/helper.rb +0 -10
  33. data/lib/webpacker/instance.rb +2 -6
  34. data/lib/webpacker/railtie.rb +1 -2
  35. data/lib/webpacker/version.rb +1 -1
  36. data/package.json +16 -16
  37. data/package/__tests__/config.js +1 -17
  38. data/package/__tests__/production.js +1 -3
  39. data/package/__tests__/staging.js +1 -3
  40. data/package/__tests__/test.js +1 -3
  41. data/package/config.js +1 -9
  42. data/package/dev_server.js +1 -1
  43. data/package/env.js +2 -2
  44. data/package/environments/base.js +22 -5
  45. data/package/environments/development.js +2 -0
  46. data/package/environments/production.js +26 -36
  47. data/package/utils/__tests__/deep_assign.js +6 -27
  48. data/package/utils/deep_assign.js +1 -1
  49. data/package/utils/get_style_rule.js +26 -37
  50. data/test/configuration_test.rb +22 -46
  51. data/test/helper_test.rb +0 -6
  52. data/test/test_app/config/webpacker.yml +0 -1
  53. data/test/test_helper.rb +0 -2
  54. data/webpacker.gemspec +0 -5
  55. data/yarn.lock +2199 -998
  56. metadata +6 -11
  57. data/lib/tasks/webpacker/info.rake +0 -19
  58. data/test/webpacker_test.rb +0 -13
@@ -22,15 +22,14 @@ copy_file "#{__dir__}/examples/elm/Main.elm",
22
22
 
23
23
  say "Installing all Elm dependencies"
24
24
  run "yarn add elm elm-webpack-loader"
25
- run "yarn add --dev elm-hot-webpack-loader"
26
- run "yarn run elm init"
27
- run "yarn run elm make"
25
+ run "yarn add --dev elm-hot-loader"
26
+ run "yarn run elm package install -- --yes"
28
27
 
29
28
  say "Updating webpack paths to include .elm file extension"
30
29
  insert_into_file Webpacker.config.config_path, " - .elm\n", after: /extensions:\n/
31
30
 
32
31
  say "Updating Elm source location"
33
- gsub_file "elm.json", /\"\src\"\n/,
32
+ gsub_file "elm-package.json", /\"\.\"\n/,
34
33
  %("#{Webpacker.config.source_path.relative_path_from(Rails.root)}"\n)
35
34
 
36
35
  say "Updating .gitignore to include elm-stuff folder"
@@ -1,6 +1,5 @@
1
1
  module Main exposing (..)
2
2
 
3
- import Browser
4
3
  import Html exposing (Html, h1, text)
5
4
  import Html.Attributes exposing (style)
6
5
 
@@ -22,7 +21,7 @@ view : Model -> Html Message
22
21
  view model =
23
22
  -- The inline style is being used for example purposes in order to keep this example simple and
24
23
  -- avoid loading additional resources. Use a proper stylesheet when building your own app.
25
- h1 [style "display" "flex", style "justify-content" "center"]
24
+ h1 [style [("display", "flex"), ("justify-content", "center")]]
26
25
  [text "Hello Elm!"]
27
26
 
28
27
  -- MESSAGE
@@ -44,11 +43,11 @@ subscriptions model =
44
43
 
45
44
  -- MAIN
46
45
 
47
- main : Program (Maybe {}) Model Message
46
+ main : Program Never Model Message
48
47
  main =
49
- Browser.element
48
+ Html.program
50
49
  {
51
- init = always init,
50
+ init = init,
52
51
  view = view,
53
52
  update = update,
54
53
  subscriptions = subscriptions
@@ -2,15 +2,11 @@
2
2
  // head of your layout file, like app/views/layouts/application.html.erb.
3
3
  // It will render "Hello Elm!" within the page.
4
4
 
5
- import {
6
- Elm
7
- } from '../Main'
5
+ import Elm from '../Main'
8
6
 
9
7
  document.addEventListener('DOMContentLoaded', () => {
10
8
  const target = document.createElement('div')
11
9
 
12
10
  document.body.appendChild(target)
13
- Elm.Main.init({
14
- node: target
15
- })
11
+ Elm.Main.embed(target)
16
12
  })
@@ -54,7 +54,7 @@ document.addEventListener('DOMContentLoaded', () => {
54
54
  //
55
55
  // Then uncomment the code block below:
56
56
  //
57
- // import TurbolinksAdapter from 'vue-turbolinks'
57
+ // import TurbolinksAdapter from 'vue-turbolinks';
58
58
  // import Vue from 'vue/dist/vue.esm'
59
59
  // import App from '../app.vue'
60
60
  //
@@ -2,11 +2,12 @@ const { resolve } = require('path')
2
2
 
3
3
  const isProduction = process.env.NODE_ENV === 'production'
4
4
  const elmSource = resolve(process.cwd())
5
- const elmBinary = `${elmSource}/node_modules/.bin/elm`
5
+ const elmMake = `${elmSource}/node_modules/.bin/elm-make`
6
6
 
7
- const elmDefaultOptions = { cwd: elmSource, pathToElm: elmBinary }
7
+ const elmDefaultOptions = { cwd: elmSource, pathToMake: elmMake }
8
8
  const developmentOptions = Object.assign({}, elmDefaultOptions, {
9
9
  verbose: true,
10
+ warn: true,
10
11
  debug: true
11
12
  })
12
13
 
@@ -18,5 +19,5 @@ const elmWebpackLoader = {
18
19
  module.exports = {
19
20
  test: /\.elm(\.erb)?$/,
20
21
  exclude: [/elm-stuff/, /node_modules/],
21
- use: isProduction ? [elmWebpackLoader] : [{ loader: 'elm-hot-webpack-loader' }, elmWebpackLoader]
22
+ use: isProduction ? [elmWebpackLoader] : [{ loader: 'elm-hot-loader' }, elmWebpackLoader]
22
23
  }
@@ -2,12 +2,10 @@ const { dev_server: devServer } = require('@rails/webpacker').config
2
2
 
3
3
  const isProduction = process.env.NODE_ENV === 'production'
4
4
  const inDevServer = process.argv.find(v => v.includes('webpack-dev-server'))
5
- const extractCSS = !(inDevServer && (devServer && devServer.hmr)) || isProduction
6
5
 
7
6
  module.exports = {
8
7
  test: /\.vue(\.erb)?$/,
9
8
  use: [{
10
- loader: 'vue-loader',
11
- options: { extractCSS }
9
+ loader: 'vue-loader'
12
10
  }]
13
11
  }
@@ -19,7 +19,7 @@ say "Adding configurations"
19
19
 
20
20
  check_yarn_integrity_config = ->(value) { <<CONFIG }
21
21
  # Verifies that versions and hashed value of the package contents in the project's package.json
22
- config.webpacker.check_yarn_integrity = #{value}
22
+ config.webpacker.check_yarn_integrity = #{value}
23
23
  CONFIG
24
24
 
25
25
  if Rails::VERSION::MAJOR >= 5
@@ -41,7 +41,7 @@ EOS
41
41
  end
42
42
 
43
43
  say "Installing all JavaScript dependencies"
44
- run "yarn add @rails/webpacker@3.5 --tilde"
44
+ run "yarn add @rails/webpacker"
45
45
 
46
46
  say "Installing dev server for live reloading"
47
47
  run "yarn add --dev webpack-dev-server@2.11.2"
@@ -50,7 +50,7 @@ if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR > 1
50
50
  say "You need to allow webpack-dev-server host as allowed origin for connect-src.", :yellow
51
51
  say "This can be done in Rails 5.2+ for development environment in the CSP initializer", :yellow
52
52
  say "config/initializers/content_security_policy.rb with a snippet like this:", :yellow
53
- say "policy.connect_src :self, :https, \"http://localhost:3035\", \"ws://localhost:3035\" if Rails.env.development?", :yellow
53
+ say "p.connect_src :self, :https, \"http://localhost:3035\", \"ws://localhost:3035\" if Rails.env.development?", :yellow
54
54
  end
55
55
 
56
56
  say "Webpacker successfully installed 🎉 🍰", :green
@@ -41,6 +41,6 @@ copy_file "#{__dir__}/examples/typescript/hello_typescript.ts",
41
41
  "#{Webpacker.config.source_entry_path}/hello_typescript.ts"
42
42
 
43
43
  say "Installing all typescript dependencies"
44
- run "yarn add typescript ts-loader@3.5.0 #{additional_packages}"
44
+ run "yarn add typescript ts-loader #{additional_packages}"
45
45
 
46
46
  say "Webpacker now supports typescript 🎉", :green
@@ -3,10 +3,19 @@ require "webpacker/configuration"
3
3
  say "Copying vue loader to config/webpack/loaders"
4
4
  copy_file "#{__dir__}/loaders/vue.js", Rails.root.join("config/webpack/loaders/vue.js").to_s
5
5
 
6
+ say "Adding vue loader plugin to config/webpack/environment.js"
7
+ insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
8
+ "const { VueLoaderPlugin } = require('vue-loader')\n",
9
+ after: "require('@rails/webpacker')\n"
10
+
11
+ insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
12
+ "environment.plugins.append('VueLoaderPlugin', new VueLoaderPlugin())\n",
13
+ before: "module.exports"
14
+
6
15
  say "Adding vue loader to config/webpack/environment.js"
7
16
  insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
8
17
  "const vue = require('./loaders/vue')\n",
9
- after: "require('@rails/webpacker')\n"
18
+ after: "require('vue-loader')\n"
10
19
 
11
20
  insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
12
21
  "environment.loaders.append('vue', vue)\n",
@@ -24,16 +33,16 @@ copy_file "#{__dir__}/examples/vue/app.vue",
24
33
  "#{Webpacker.config.source_path}/app.vue"
25
34
 
26
35
  say "Installing all Vue dependencies"
27
- run "yarn add vue vue-loader@14.2.2 vue-template-compiler"
36
+ run "yarn add vue vue-loader@next vue-template-compiler"
28
37
 
29
38
  if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR > 1
30
39
  say "You need to enable unsafe-eval rule.", :yellow
31
40
  say "This can be done in Rails 5.2+ for development environment in the CSP initializer", :yellow
32
41
  say "config/initializers/content_security_policy.rb with a snippet like this:", :yellow
33
42
  say "if Rails.env.development?", :yellow
34
- say " policy.script_src :self, :https, :unsafe_eval", :yellow
43
+ say " p.script_src :self, :https, :unsafe_eval", :yellow
35
44
  say "else", :yellow
36
- say " policy.script_src :self, :https", :yellow
45
+ say " p.script_src :self, :https", :yellow
37
46
  say "end", :yellow
38
47
  end
39
48
 
@@ -1,5 +1,4 @@
1
1
  tasks = {
2
- "webpacker:info" => "Provides information on Webpacker's environment",
3
2
  "webpacker:install" => "Installs and setup webpack with Yarn",
4
3
  "webpacker:compile" => "Compiles webpack bundles based on environment",
5
4
  "webpacker:clobber" => "Removes the webpack compiled output directory",
@@ -1,6 +1,6 @@
1
1
  namespace :webpacker do
2
2
  desc "Support for older Rails versions. Install all JavaScript dependencies as specified via Yarn"
3
3
  task :yarn_install do
4
- system "yarn install --no-progress --production"
4
+ system "yarn install --no-progress --frozen-lockfile --production"
5
5
  end
6
6
  end
@@ -1,5 +1,4 @@
1
1
  require "active_support/core_ext/module/attribute_accessors"
2
- require "active_support/core_ext/string/inquiry"
3
2
  require "active_support/logger"
4
3
  require "active_support/tagged_logging"
5
4
 
@@ -44,8 +44,7 @@ class Webpacker::Compiler
44
44
 
45
45
  def watched_files_digest
46
46
  files = Dir[*default_watched_paths, *watched_paths].reject { |f| File.directory?(f) }
47
- file_ids = files.sort.map { |f| "#{File.basename(f)}/#{Digest::SHA1.file(f).hexdigest}" }
48
- Digest::SHA1.hexdigest(file_ids.join("/"))
47
+ Digest::SHA1.hexdigest(files.map { |f| "#{File.basename(f)}/#{File.mtime(f).utc.to_i}" }.join("/"))
49
48
  end
50
49
 
51
50
  def record_compilation_digest
@@ -60,11 +59,10 @@ class Webpacker::Compiler
60
59
  def run_webpack
61
60
  logger.info "Compiling…"
62
61
 
63
- stdout, sterr , status = Open3.capture3(webpack_env, "#{RbConfig.ruby} ./bin/webpack")
62
+ sterr, stdout, status = Open3.capture3(webpack_env, "#{RbConfig.ruby} ./bin/webpack")
64
63
 
65
64
  if status.success?
66
65
  logger.info "Compiled all packs in #{config.public_output_path}"
67
- logger.info stdout if config.webpack_compile_output?
68
66
  else
69
67
  logger.error "Compilation failed:\n#{sterr}\n#{stdout}"
70
68
  end
@@ -1,14 +1,8 @@
1
- require "yaml"
2
- require "active_support/core_ext/hash/keys"
3
- require "active_support/core_ext/hash/indifferent_access"
4
-
5
1
  class Webpacker::Configuration
6
- attr_reader :root_path, :config_path, :env
2
+ delegate :root_path, :config_path, :env, to: :@webpacker
7
3
 
8
- def initialize(root_path:, config_path:, env:)
9
- @root_path = root_path
10
- @config_path = config_path
11
- @env = env
4
+ def initialize(webpacker)
5
+ @webpacker = webpacker
12
6
  end
13
7
 
14
8
  def refresh
@@ -63,10 +57,6 @@ class Webpacker::Configuration
63
57
  fetch(:extensions)
64
58
  end
65
59
 
66
- def webpack_compile_output?
67
- fetch(:webpack_compile_output)
68
- end
69
-
70
60
  private
71
61
  def fetch(key)
72
62
  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
- attr_reader :config
6
+ delegate :config, to: :@webpacker
7
7
 
8
- def initialize(config)
9
- @config = config
8
+ def initialize(webpacker)
9
+ @webpacker = webpacker
10
10
  end
11
11
 
12
12
  def running?
@@ -54,16 +54,12 @@ class Webpacker::DevServer
54
54
  "#{host}:#{port}"
55
55
  end
56
56
 
57
- def pretty?
58
- fetch(:pretty)
59
- end
60
-
61
57
  private
62
58
  def fetch(key)
63
59
  ENV["WEBPACKER_DEV_SERVER_#{key.upcase}"] || config.dev_server.fetch(key, defaults[key])
64
60
  end
65
61
 
66
62
  def defaults
67
- config.send(:defaults)[:dev_server] || {}
63
+ config.send(:defaults)[:dev_server]
68
64
  end
69
65
  end
@@ -11,10 +11,6 @@ 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
18
14
  env["SCRIPT_NAME"] = ""
19
15
 
20
16
  super(env)
@@ -1,7 +1,6 @@
1
1
  require "shellwords"
2
+ require "yaml"
2
3
  require "socket"
3
- require "webpacker/configuration"
4
- require "webpacker/dev_server"
5
4
  require "webpacker/runner"
6
5
 
7
6
  module Webpacker
@@ -14,22 +13,15 @@ module Webpacker
14
13
 
15
14
  private
16
15
  def load_config
17
- app_root = Pathname.new(@app_path)
16
+ @config_file = File.join(@app_path, "config/webpacker.yml")
17
+ dev_server = YAML.load_file(@config_file)[ENV["RAILS_ENV"]]["dev_server"]
18
18
 
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?
19
+ @hostname = dev_server["host"]
20
+ @port = dev_server["port"]
21
+ @pretty = dev_server.fetch("pretty", true)
30
22
 
31
23
  rescue Errno::ENOENT, NoMethodError
32
- $stdout.puts "webpack dev_server configuration not found in #{config.config_path}[#{ENV["RAILS_ENV"]}]."
24
+ $stdout.puts "webpack dev_server configuration not found in #{@config_file}[#{ENV["RAILS_ENV"]}]."
33
25
  $stdout.puts "Please run bundle exec rails webpacker:install to install Webpacker"
34
26
  exit!
35
27
  end
@@ -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
@@ -33,16 +33,6 @@ module Webpacker::Helper
33
33
  end
34
34
  end
35
35
 
36
- # Creates a image tag that references the named pack file.
37
- #
38
- # Example:
39
- #
40
- # <%= image_pack_tag 'application.png', size: '16x10', alt: 'Edit Entry' %>
41
- # <img alt='Edit Entry' src='/packs/application-k344a6d59eef8632c9d1.png' width='16' height='10' />
42
- def image_pack_tag(name, **options)
43
- image_tag(asset_path(Webpacker.manifest.lookup!(name)), **options)
44
- end
45
-
46
36
  # Creates a script tag that references the named pack file, as compiled by webpack per the entries list
47
37
  # in config/webpack/shared.js. By default, this list is auto-generated to match everything in
48
38
  # app/javascript/packs/*.js. In production mode, the digested reference is automatically looked up.
@@ -12,11 +12,7 @@ class Webpacker::Instance
12
12
  end
13
13
 
14
14
  def config
15
- @config ||= Webpacker::Configuration.new(
16
- root_path: root_path,
17
- config_path: config_path,
18
- env: env
19
- )
15
+ @config ||= Webpacker::Configuration.new self
20
16
  end
21
17
 
22
18
  def compiler
@@ -24,7 +20,7 @@ class Webpacker::Instance
24
20
  end
25
21
 
26
22
  def dev_server
27
- @dev_server ||= Webpacker::DevServer.new config
23
+ @dev_server ||= Webpacker::DevServer.new self
28
24
  end
29
25
 
30
26
  def manifest
@@ -46,8 +46,7 @@ class Webpacker::Engine < ::Rails::Engine
46
46
  end
47
47
 
48
48
  initializer "webpacker.proxy" do |app|
49
- insert_middleware = Webpacker.config.dev_server.present? rescue nil
50
- if insert_middleware
49
+ if Rails.env.development?
51
50
  app.middleware.insert_before 0,
52
51
  Rails::VERSION::MAJOR >= 5 ?
53
52
  Webpacker::DevServerProxy : "Webpacker::DevServerProxy", ssl_verify_none: true
@@ -1,4 +1,4 @@
1
1
  module Webpacker
2
2
  # Change the version in package.json too, please!
3
- VERSION = "3.6.0".freeze
3
+ VERSION = "4.0.0-pre.1".freeze
4
4
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rails/webpacker",
3
- "version": "3.6.0",
3
+ "version": "4.0.0-pre.1",
4
4
  "description": "Use webpack to manage app-like JavaScript modules in Rails",
5
5
  "main": "package/index.js",
6
6
  "files": [
@@ -12,39 +12,39 @@
12
12
  "yarn": ">=0.25.2"
13
13
  },
14
14
  "dependencies": {
15
- "babel-core": "^6.26.3",
16
- "babel-loader": "^7.1.5",
15
+ "babel-core": "^6.26.0",
16
+ "babel-loader": "^7.1.3",
17
17
  "babel-plugin-syntax-dynamic-import": "^6.18.0",
18
18
  "babel-plugin-transform-class-properties": "^6.24.1",
19
19
  "babel-plugin-transform-object-rest-spread": "^6.26.0",
20
20
  "babel-polyfill": "^6.26.0",
21
- "babel-preset-env": "^1.7.0",
21
+ "babel-preset-env": "^1.6.1",
22
22
  "case-sensitive-paths-webpack-plugin": "^2.1.2",
23
23
  "compression-webpack-plugin": "^1.1.11",
24
24
  "css-loader": "^0.28.11",
25
- "extract-text-webpack-plugin": "^3.0.2",
26
25
  "file-loader": "^1.1.11",
27
26
  "glob": "^7.1.2",
28
- "js-yaml": "^3.12.0",
29
- "node-sass": "^4.9.2",
30
- "optimize-css-assets-webpack-plugin": "^3.2.0",
27
+ "js-yaml": "^3.11.0",
28
+ "mini-css-extract-plugin": "^0.4.0",
29
+ "node-sass": "^4.8.3",
31
30
  "path-complete-extname": "^1.0.0",
32
31
  "postcss-cssnext": "^3.1.0",
33
32
  "postcss-import": "^11.1.0",
34
- "postcss-loader": "^2.1.5",
33
+ "postcss-loader": "^2.1.3",
35
34
  "sass-loader": "^6.0.7",
36
- "style-loader": "^0.21.0",
37
- "uglifyjs-webpack-plugin": "^1.2.7",
38
- "webpack": "^3.12.0",
39
- "webpack-manifest-plugin": "^1.3.2"
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"
40
40
  },
41
41
  "devDependencies": {
42
- "eslint": "^4.19.1",
42
+ "eslint": "^4.18.2",
43
43
  "eslint-config-airbnb": "^16.1.0",
44
- "eslint-plugin-import": "^2.11.0",
44
+ "eslint-plugin-import": "^2.9.0",
45
45
  "eslint-plugin-jsx-a11y": "^6.0.3",
46
46
  "eslint-plugin-react": "^7.7.0",
47
- "jest": "^23.3.0"
47
+ "jest": "^22.4.2"
48
48
  },
49
49
  "jest": {
50
50
  "testRegex": "(/__tests__/.*|(\\.|/))\\.jsx?$",