webpacker 3.6.0 → 4.0.0.pre.pre.1

Sign up to get free protection for your applications and to get access to all the features.
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?$",