react_on_rails 11.3.1 → 12.0.0

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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +320 -0
  3. data/.eslintignore +2 -1
  4. data/.eslintrc +23 -1
  5. data/.github/FUNDING.yml +1 -0
  6. data/.gitignore +3 -1
  7. data/.prettierignore +10 -1
  8. data/.prettierrc +3 -0
  9. data/.rubocop.yml +37 -11
  10. data/.travis.yml +9 -20
  11. data/CHANGELOG.md +62 -20
  12. data/CONTRIBUTING.md +60 -71
  13. data/Gemfile +3 -4
  14. data/{COMM-LICENSE → REACT-ON-RAILS-PRO-LICENSE} +6 -9
  15. data/README.md +129 -92
  16. data/Rakefile +0 -7
  17. data/SUMMARY.md +7 -11
  18. data/book.json +5 -5
  19. data/docs/additional-reading/asset-pipeline.md +8 -16
  20. data/docs/additional-reading/react-helmet.md +30 -10
  21. data/docs/additional-reading/react-router.md +52 -75
  22. data/docs/additional-reading/server-rendering-tips.md +12 -7
  23. data/docs/api/javascript-api.md +3 -3
  24. data/docs/api/redux-store-api.md +4 -2
  25. data/docs/api/view-helpers-api.md +6 -7
  26. data/docs/basics/configuration.md +83 -69
  27. data/docs/basics/deployment.md +2 -4
  28. data/docs/basics/heroku-deployment.md +24 -0
  29. data/docs/basics/hmr-and-hot-reloading-with-the-webpack-dev-server.md +49 -0
  30. data/docs/basics/i18n.md +45 -23
  31. data/docs/basics/installation-into-an-existing-rails-app.md +4 -9
  32. data/docs/basics/react-server-rendering.md +1 -1
  33. data/docs/basics/recommended-project-structure.md +5 -22
  34. data/docs/basics/{generator-functions-and-railscontext.md → render-functions-and-railscontext.md} +59 -21
  35. data/docs/basics/rspec-configuration.md +27 -16
  36. data/docs/basics/upgrading-react-on-rails.md +58 -2
  37. data/docs/basics/webpack-configuration.md +18 -8
  38. data/docs/contributor-info/errors-with-hooks.md +45 -0
  39. data/docs/contributor-info/pull-requests.md +44 -0
  40. data/docs/misc/doctrine.md +1 -1
  41. data/docs/{misc-pending → outdated}/code-splitting.md +12 -8
  42. data/docs/{basics → outdated}/how-react-on-rails-works.md +8 -4
  43. data/docs/{misc-pending → outdated}/manual-installation-overview.md +5 -5
  44. data/docs/{additional-reading → outdated}/rails-assets-relative-paths.md +3 -3
  45. data/docs/{misc-pending → outdated}/rails-assets.md +2 -12
  46. data/docs/tutorial.md +94 -68
  47. data/jest.config.js +4 -0
  48. data/lib/generators/react_on_rails/base_generator.rb +2 -2
  49. data/lib/generators/react_on_rails/dev_tests_generator.rb +1 -1
  50. data/lib/generators/react_on_rails/generator_helper.rb +4 -6
  51. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev +3 -1
  52. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-hmr +26 -0
  53. data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +20 -40
  54. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +4 -1
  55. data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +1 -8
  56. data/lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +4 -8
  57. data/lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/store/helloWorldStore.js +1 -3
  58. data/lib/react_on_rails/configuration.rb +58 -28
  59. data/lib/react_on_rails/error.rb +2 -0
  60. data/lib/react_on_rails/helper.rb +41 -91
  61. data/lib/react_on_rails/json_parse_error.rb +2 -0
  62. data/lib/react_on_rails/locales/base.rb +150 -0
  63. data/lib/react_on_rails/locales/to_js.rb +37 -0
  64. data/lib/react_on_rails/locales/to_json.rb +27 -0
  65. data/lib/react_on_rails/prerender_error.rb +11 -15
  66. data/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +41 -46
  67. data/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +7 -8
  68. data/lib/react_on_rails/test_helper/webpack_assets_compiler.rb +17 -0
  69. data/lib/react_on_rails/utils.rb +14 -19
  70. data/lib/react_on_rails/version.rb +1 -1
  71. data/lib/react_on_rails/version_checker.rb +1 -0
  72. data/lib/react_on_rails/webpacker_utils.rb +19 -2
  73. data/lib/react_on_rails.rb +3 -1
  74. data/lib/tasks/assets.rake +33 -46
  75. data/lib/tasks/locale.rake +4 -2
  76. data/package-scripts.yml +11 -8
  77. data/package.json +29 -28
  78. data/rakelib/dummy_apps.rake +1 -9
  79. data/rakelib/example_type.rb +3 -1
  80. data/rakelib/examples.rake +3 -0
  81. data/rakelib/lint.rake +2 -7
  82. data/rakelib/node_package.rake +2 -2
  83. data/rakelib/release.rake +0 -6
  84. data/rakelib/run_rspec.rake +5 -18
  85. data/react_on_rails.gemspec +4 -5
  86. data/tsconfig.json +14 -0
  87. data/webpackConfigLoader.js +3 -2
  88. data/yarn.lock +4333 -2209
  89. metadata +44 -54
  90. data/Gemfile.rails32 +0 -73
  91. data/docs/additional-reading/babel.md +0 -5
  92. data/docs/additional-reading/heroku-deployment.md +0 -92
  93. data/docs/additional-reading/hot-reloading-rails-development-asset-pipeline.md +0 -47
  94. data/docs/api/ruby-api-hot-reload-view-helpers.md +0 -44
  95. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-server +0 -12
  96. data/lib/react_on_rails/assets_precompile.rb +0 -153
  97. data/lib/react_on_rails/locales_to_js.rb +0 -138
  98. /data/docs/{misc → outdated}/rails3.md +0 -0
@@ -1,69 +1,56 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "react_on_rails/assets_precompile"
4
- require "active_support"
3
+ # Important: The default assets:precompile is modified ONLY if the rails/webpacker webpack config
4
+ # does not exist!
5
5
 
6
- if defined?(Sprockets)
7
- namespace :react_on_rails do
8
- namespace :assets do
9
- desc "Creates non-digested symlinks for the assets in the public asset dir"
10
- task symlink_non_digested_assets: :"assets:environment" do
11
- ReactOnRails::AssetsPrecompile.new.symlink_non_digested_assets
12
- end
6
+ require "active_support"
13
7
 
14
- desc "Cleans all broken symlinks for the assets in the public asset dir"
15
- task delete_broken_symlinks: :"assets:environment" do
16
- ReactOnRails::AssetsPrecompile.new.delete_broken_symlinks
17
- end
8
+ ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development"
9
+ ENV["NODE_ENV"] ||= "development"
18
10
 
19
- # In this task, set prerequisites for the assets:precompile task
20
- desc <<-DESC.strip_heredoc
21
- Create webpack assets before calling assets:environment
22
- The webpack task must run before assets:environment task.
23
- Otherwise Sprockets cannot find the files that webpack produces.
24
- This is the secret sauce for how a Heroku deployment knows to create the webpack generated JavaScript files.
25
- DESC
26
- task compile_environment: :webpack do
27
- Rake::Task["assets:environment"].invoke
28
- end
11
+ unless ReactOnRails::WebpackerUtils.webpacker_webpack_production_config_exists?
12
+ # Ensure that rails/webpacker does not call bin/webpack if we're providing
13
+ # the build command.
14
+ ENV["WEBPACKER_PRECOMPILE"] = "false"
29
15
 
30
- desc "Delete assets created with webpack, in the generated assetst directory (/app/assets/webpack)"
31
- task clobber: :environment do
32
- ReactOnRails::AssetsPrecompile.new.clobber
33
- end
16
+ if Rake::Task.task_defined?("assets:precompile")
17
+ Rake::Task["assets:precompile"].enhance do
18
+ Rake::Task["react_on_rails:assets:webpack"].invoke
19
+ puts "Invoking task webpacker:clean from React on Rails"
20
+ Rake::Task["webpacker:clean"].invoke
34
21
  end
22
+ else
23
+ Rake::Task.define_task("assets:precompile" => ["react_on_rails:assets:webpack",
24
+ "webpacker:clean"])
35
25
  end
36
-
37
- # These tasks run as pre-requisites of assets:precompile.
38
- # Note, it's not possible to refer to ReactOnRails configuration values at this point.
39
- Rake::Task["assets:precompile"]
40
- .clear_prerequisites
41
- .enhance([:environment, "react_on_rails:assets:compile_environment"])
42
- .enhance do
43
- Rake::Task["react_on_rails:assets:symlink_non_digested_assets"].invoke
44
- Rake::Task["react_on_rails:assets:delete_broken_symlinks"].invoke
45
- end
46
26
  end
47
27
 
48
28
  # Sprockets independent tasks
49
29
  namespace :react_on_rails do
50
30
  namespace :assets do
51
31
  desc <<-DESC.strip_heredoc
52
- Compile assets with webpack
53
- Uses command defined with ReactOnRails.configuration.build_production_command
54
-
55
- sh "#{ReactOnRails::Utils.prepend_cd_node_modules_directory('<ReactOnRails.configuration.build_production_command>')}"
32
+ Compile assets with webpack
33
+ Uses command defined with ReactOnRails.configuration.build_production_command
34
+ sh "#{ReactOnRails::Utils.prepend_cd_node_modules_directory('<ReactOnRails.configuration.build_production_command>')}"
35
+ Note: This command is not automatically added to assets:precompile if the rails/webpacker
36
+ configuration file config/webpack/production.js exists.
56
37
  DESC
57
38
  task webpack: :locale do
58
- if Rake::Task.task_defined?("webpacker:compile")
59
- # TODO: Eventually, this will need reconsideration if we use any of the Webpacker compilation
60
- Rake::Task["webpacker:compile"].clear
61
- end
62
-
63
39
  if ReactOnRails.configuration.build_production_command.present?
64
40
  sh ReactOnRails::Utils.prepend_cd_node_modules_directory(
65
41
  ReactOnRails.configuration.build_production_command
66
42
  ).to_s
43
+ else
44
+ msg = <<~MSG
45
+ React on Rails is aborting webpack compilation from task react_on_rails:assets:webpack
46
+ because you do not have the `config.build_production_command` defined.
47
+
48
+ Note, this task may have run as part of `assets:precompile`. If file
49
+ config/webpack/production.js does not exist, React on Rails will modify
50
+ the default `asset:precompile` to run task `react_on_rails:assets:webpack`.
51
+ MSG
52
+ puts Rainbow(msg).red
53
+ exit!(1)
67
54
  end
68
55
  end
69
56
  end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "react_on_rails/locales_to_js"
3
+ require "react_on_rails/locales/base"
4
+ require "react_on_rails/locales/to_js"
5
+ require "react_on_rails/locales/to_json"
4
6
  require "active_support"
5
7
 
6
8
  namespace :react_on_rails do
@@ -10,6 +12,6 @@ namespace :react_on_rails do
10
12
  the "ReactOnRails.configuration.i18n_dir".
11
13
  DESC
12
14
  task locale: :environment do
13
- ReactOnRails::LocalesToJs.new
15
+ ReactOnRails::Locales.compile
14
16
  end
15
17
  end
data/package-scripts.yml CHANGED
@@ -1,12 +1,12 @@
1
1
  scripts:
2
2
  lint:
3
- description: Run all linters (eslint, flow)
3
+ description: Run all linters (eslint, tsc)
4
4
  script: concurrently --prefix "[{name}]" --names "ESLINT" -c "blue,yellow,magenta,orange" "nps eslint"
5
5
 
6
6
  eslint:
7
7
  default:
8
8
  description: Run eslint.
9
- script: eslint . --ext ".js,.jsx"
9
+ script: eslint . --ext ".js,.jsx,.ts"
10
10
  fix:
11
11
  description: Run eslint and auto-fix.
12
12
  script: nps "eslint --fix"
@@ -17,30 +17,33 @@ scripts:
17
17
  format:
18
18
  default:
19
19
  description: Format files using prettier.
20
- script: concurrently --prefix "[{name}]" --names "js,json" -c "yellow,magenta,green" "nps format.js" "nps format.json"
20
+ script: concurrently --prefix "[{name}]" --names "ts,js,json" -c "yellow,magenta,green" "nps format.js" "nps format.json"
21
21
  listDifferent:
22
22
  description: Check that all files were formatted using prettier.
23
23
  script: |
24
24
  concurrently \
25
25
  --prefix "[{name}]" \
26
- --names "js,css,json" \
27
- -c "yellow,magenta,green" \
26
+ --names "ts,js,json" \
27
+ -c "yellow,magenta" \
28
28
  "nps format.js.listDifferent" \
29
29
  "nps format.json.listDifferent"
30
30
  js:
31
31
  default:
32
32
  description: Run prettier-eslint on JS.
33
- script: prettier "packages/**/*.@(js|jsx)" "spec/dummy/client/app/**/*.@(js|jsx)" "webpack.config.babel.js" "webpack/**/*.js" --write
33
+ #script: prettier "packages/**/*.@(js|jsx)" "spec/dummy/client/app/**/*.@(js|jsx)" "webpack.config.babel.js" "webpack/**/*.js" --write
34
+ script: prettier "**/*.@(js|jsx)" --write
34
35
  listDifferent:
35
36
  description: Check if any JS files would change by running prettier-eslint.
36
- script: prettier "**/*.@(js|jsx)" "webpack.config.babel.js" "webpack/**/*.js" --list-different
37
+ # script: prettier "**/*.@(js|jsx)" "webpack.config.babel.js" "webpack/**/*.js" --list-different
38
+ script: prettier "**/*.@(js|jsx)" --list-different
37
39
  json:
38
40
  default:
39
41
  description: Run prettier on JSON files.
40
42
  script: rm -rf packages/vm-renderer/tests/tmp && prettier "**/*.json" --write
41
43
  listDifferent:
42
44
  description: Check if any JSON files would change by running prettier-eslint.
43
- script: prettier "**/*.json" "../spec/**/*.json" --list-different
45
+ script: prettier "**/*.json" --list-different
46
+
44
47
  renderer:
45
48
  description: Starts the node renderer.
46
49
  script: node renderer.js
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-on-rails",
3
- "version": "11.3.1",
3
+ "version": "12.0.0",
4
4
  "description": "react-on-rails JavaScript for react_on_rails Ruby gem",
5
5
  "main": "node_package/lib/ReactOnRails.js",
6
6
  "directories": {
@@ -9,70 +9,75 @@
9
9
  "devDependencies": {
10
10
  "@babel/cli": "^7.0.0",
11
11
  "@babel/core": "^7.0.0",
12
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
13
12
  "@babel/plugin-transform-runtime": "^7.0.0",
13
+ "@babel/plugin-transform-typescript": "^7.8.7",
14
14
  "@babel/preset-env": "^7.0.0",
15
15
  "@babel/preset-react": "^7.0.0",
16
16
  "@babel/types": "^7.0.0",
17
+ "@types/jest": "^25.1.4",
18
+ "@types/node": "^13.9.0",
19
+ "@types/react": "^16.9.23",
20
+ "@types/react-dom": "^16.9.5",
21
+ "@types/turbolinks": "^5.2.0",
22
+ "@typescript-eslint/eslint-plugin": "^2.23.0",
23
+ "@typescript-eslint/parser": "^2.23.0",
17
24
  "babel-loader": "^8.0.2",
18
- "babel-tape-runner": "^3.0.0",
19
25
  "babelify": "^10.0.0",
20
26
  "blue-tape": "^1.0.0",
21
27
  "create-react-class": "^15.6.0",
22
- "eslint": "^5.7.0",
23
- "eslint-config-prettier": "^3.1.0",
28
+ "eslint": "^6.8.0",
29
+ "eslint-config-prettier": "^6.10.1",
24
30
  "eslint-config-shakacode": "^16.0.1",
25
31
  "eslint-plugin-import": "^2.6.1",
26
32
  "eslint-plugin-jsx-a11y": "^6.1.2",
27
33
  "eslint-plugin-prettier": "^3.0.0",
28
34
  "eslint-plugin-react": "^7.1.0",
29
- "flow-bin": "^0.83.0",
35
+ "jest": "^25.1.0",
30
36
  "jsdom": "^11.1.0",
31
37
  "nps": "^5.9.3",
32
- "prettier": "^1.14.3",
33
- "prettier-eslint-cli": "^4.7.1",
38
+ "prettier": "^2.0.1",
39
+ "prettier-eslint-cli": "^5.0.0",
34
40
  "prop-types": "^15.5.10",
35
41
  "react": "^16.5.2",
36
42
  "react-dom": "^16.5.2",
37
43
  "react-transform-hmr": "^1.0.4",
38
44
  "redux": "^4.0.1",
39
45
  "release-it": "^8.2.0",
40
- "tap-spec": "^5.0.0",
41
- "tape": "^4.7.0",
46
+ "ts-jest": "^25.2.1",
47
+ "tslint-config-prettier": "^1.18.0",
48
+ "typescript": "^3.8.3",
42
49
  "webpack": "^3.4.1",
43
50
  "webpack-manifest-plugin": "^1.2.1"
44
51
  },
45
52
  "dependencies": {
46
- "@babel/runtime-corejs2": "^7.0.0"
53
+ "@babel/runtime-corejs3": "^7.9.6",
54
+ "concurrently": "^5.1.0"
47
55
  },
48
56
  "peerDependencies": {
49
57
  "js-yaml": ">= 3.0.0",
50
- "react": ">= 0.14",
51
- "react-dom": ">= 0.14"
58
+ "react": ">= 16",
59
+ "react-dom": ">= 16"
52
60
  },
53
61
  "files": [
54
62
  "node_package/lib",
55
63
  "webpackConfigLoader.js"
56
64
  ],
57
65
  "scripts": {
58
- "test": "babel-tape-runner -r node_package/tests/helpers/test_helper.js node_package/tests/*.js | tap-spec",
66
+ "test": "jest node_package/tests",
59
67
  "clean": "rm -rf node_package/lib",
68
+ "start": "nps",
60
69
  "prepare": "yarn run build",
61
- "prepublish": "npm run prepare",
62
- "babel": "babel --out-dir node_package/lib node_package/src",
63
- "build": "yarn run clean && yarn run babel",
64
- "build-watch": "babel --watch --out-dir node_package/lib node_package/src",
65
- "eslint": "eslint .",
66
- "flow": "flow check node_package",
67
- "lint": "yarn run eslint && yarn run flow",
68
- "check": "yarn run lint && yarn run flow && yarn run test",
70
+ "build": "yarn run clean && yarn run tsc --declaration",
71
+ "build-watch": "yarn run clean && yarn run tsc --watch",
72
+ "lint": "nps eslint",
73
+ "check": "yarn run lint && yarn run test && yarn run type-check",
74
+ "type-check": "yarn run tsc --noEmit --noErrorTruncation",
69
75
  "prerelease": "yarn run check && yarn run clean && yarn run build",
70
76
  "release:patch": "node_package/scripts/release patch",
71
77
  "release:minor": "node_package/scripts/release minor",
72
78
  "release:major": "node_package/scripts/release major",
73
79
  "dummy:install": "rake dummy_apps",
74
- "dummy:spec": "rake run_rspec:dummy",
75
- "install-react-on-rails": "yarn link"
80
+ "dummy:spec": "rake run_rspec:dummy"
76
81
  },
77
82
  "repository": {
78
83
  "type": "git",
@@ -91,9 +96,5 @@
91
96
  "bugs": {
92
97
  "url": "https://github.com/shakacode/react_on_rails/issues"
93
98
  },
94
- "jest": {
95
- "verbose": true,
96
- "testURL": "http://localhost/"
97
- },
98
99
  "homepage": "https://github.com/shakacode/react_on_rails#readme"
99
100
  }
@@ -8,6 +8,7 @@ namespace :dummy_apps do
8
8
  task :yarn_install do
9
9
  yarn_install_cmd = "yarn install --mutex network"
10
10
  sh_in_dir(dummy_app_dir, yarn_install_cmd)
11
+ sh_in_dir(dummy_app_dir, "yalc link react-on-rails")
11
12
  end
12
13
 
13
14
  task dummy_app: [:yarn_install] do
@@ -15,15 +16,6 @@ namespace :dummy_apps do
15
16
  bundle_install_in(dummy_app_dir)
16
17
  end
17
18
 
18
- task :dummy_no_webpacker do
19
- npm_install_cmd = "npm install"
20
- install_react_on_rails_cmd = "yarn run install-react-on-rails"
21
- dummy_app_dir = File.join(gem_root, "spec/dummy_no_webpacker")
22
- sh_in_dir(File.join(gem_root, "spec/dummy_no_webpacker/client"), npm_install_cmd)
23
- sh_in_dir(dummy_app_dir, install_react_on_rails_cmd)
24
- sh_in_dir(dummy_app_dir, "BUNDLE_GEMFILE=Gemfile.rails32 bundle install")
25
- end
26
-
27
19
  task dummy_apps: %i[dummy_app node_package] do
28
20
  puts "Prepared all Dummy Apps"
29
21
  end
@@ -49,8 +49,10 @@ module ReactOnRails
49
49
  end
50
50
 
51
51
  # Options we pass when running `rails new` from the command-line.
52
+ attr_writer :rails_options
53
+
52
54
  def rails_options
53
- "--skip-bundle --skip-spring --skip-git --skip-test-unit --skip-active-record"
55
+ @rails_options ||= "--skip-bundle --skip-spring --skip-git --skip-test-unit --skip-active-record"
54
56
  end
55
57
 
56
58
  %w[gen clobber npm_install build_webpack_bundles].each do |task_type|
@@ -6,6 +6,8 @@
6
6
  # Also see example_type.rb
7
7
 
8
8
  require "yaml"
9
+ require 'rails/version'
10
+
9
11
  require_relative "example_type"
10
12
  require_relative "task_helpers"
11
13
 
@@ -28,6 +30,7 @@ namespace :examples do # rubocop:disable Metrics/BlockLength
28
30
  desc "Generates #{example_type.name_pretty}"
29
31
  task example_type.gen_task_name_short => example_type.clobber_task_name do
30
32
  mkdir_p(example_type.dir)
33
+ example_type.rails_options += " --webpack" if Rails.version >= "5.1" && Rails.version < "6"
31
34
  sh_in_dir(examples_dir, "rails new #{example_type.name} #{example_type.rails_options}")
32
35
  sh_in_dir(example_type.dir, "touch .gitignore")
33
36
  sh_in_dir(example_type.dir, "rake webpacker:install")
data/rakelib/lint.rake CHANGED
@@ -26,13 +26,8 @@ namespace :lint do # rubocop:disable Metrics/BlockLength
26
26
  sh_in_dir(gem_root, "yarn run eslint")
27
27
  end
28
28
 
29
- desc "Run flow from shell"
30
- task :flow do
31
- sh_in_dir(gem_root, "yarn run flow")
32
- end
33
-
34
- desc "Run all eslint, flow, rubocop linters. Skip ruby-lint and scss"
35
- task lint: %i[eslint flow rubocop] do
29
+ desc "Run all eslint & rubocop linters. Skip ruby-lint and scss"
30
+ task lint: %i[eslint rubocop] do
36
31
  puts "Completed all linting"
37
32
  end
38
33
  end
@@ -6,8 +6,8 @@ namespace :node_package do
6
6
  include ReactOnRails::TaskHelpers
7
7
 
8
8
  task :build do
9
- puts "Building Node Package and running 'yarn link'"
10
- sh "yarn run build && yarn link"
9
+ puts "Building Node Package and running 'yalc publish'"
10
+ sh "yarn run build && yalc publish"
11
11
  end
12
12
  end
13
13
 
data/rakelib/release.rake CHANGED
@@ -69,12 +69,6 @@ task :release, %i[gem_version dry_run tools_install] do |_t, args|
69
69
  # Release the new gem version
70
70
  unless is_dry_run
71
71
  sh_in_dir(gem_root, "gem release")
72
-
73
- # Update master with new npm version
74
- sleep 5 # short pause to make sure npmjs has time to update
75
- sh_in_dir(File.join(gem_root, "spec", "dummy", "client"), "yarn add react-on-rails@#{npm_version} --exact")
76
- sh_in_dir(gem_root, "git commit -am 'Updated spec/dummy/client/package.json latest version'")
77
- sh_in_dir(gem_root, "git push")
78
72
  end
79
73
  end
80
74
  # rubocop:enable Metrics/BlockLength
@@ -18,16 +18,6 @@ namespace :run_rspec do
18
18
  run_tests_in("", rspec_args: File.join("spec", "react_on_rails"))
19
19
  end
20
20
 
21
- desc "Run RSpec with rails32 gemfile"
22
- task :gem_rails32 do
23
- rspec_args = "spec/react_on_rails --tag ~webpacker --exclude-pattern "\
24
- "\"**/generators/*_spec.rb,"\
25
- "**/test_helper/webpack_*_spec.rb\""
26
- run_tests_in("",
27
- rspec_args: rspec_args,
28
- env_vars: "BUNDLE_GEMFILE=spec/dummy_no_webpacker/Gemfile.rails32")
29
- end
30
-
31
21
  desc "Runs dummy rspec with turbolinks"
32
22
  task dummy: ["dummy_apps:dummy_app"] do
33
23
  clean_gen_assets(spec_dummy_dir)
@@ -44,14 +34,6 @@ namespace :run_rspec do
44
34
  command_name: "dummy_no_turbolinks")
45
35
  end
46
36
 
47
- desc "Runs dummy_no_webpacker rspec"
48
- task :dummy_no_webpacker do
49
- dummy_app_dir = File.join(gem_root, "spec/dummy_no_webpacker")
50
- clean_gen_assets(dummy_app_dir)
51
- run_tests_in(dummy_app_dir,
52
- env_vars: "BUNDLE_GEMFILE=Gemfile.rails32")
53
- end
54
-
55
37
  # Dynamically define Rake tasks for each example app found in the examples directory
56
38
  ExampleType.all.each do |example_type|
57
39
  desc "Runs RSpec for #{example_type.name_pretty} only"
@@ -77,6 +59,11 @@ namespace :run_rspec do
77
59
  puts "Completed all RSpec tests"
78
60
  end
79
61
 
62
+ desc "run all dummy tests"
63
+ task all_dummy: %i[dummy_no_turbolinks dummy] do
64
+ puts "Completed all RSpec tests"
65
+ end
66
+
80
67
  desc "run all tests"
81
68
  task run_rspec: %i[all_but_examples examples] do
82
69
  puts "Completed all RSpec tests"
@@ -23,16 +23,17 @@ Gem::Specification.new do |s|
23
23
  s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  s.require_paths = ["lib"]
25
25
 
26
- s.required_ruby_version = ">= 2.1.0"
26
+ s.required_ruby_version = ">= 2.5.0"
27
27
 
28
28
  s.add_dependency "addressable"
29
29
  s.add_dependency "connection_pool"
30
30
  s.add_dependency "execjs", "~> 2.5"
31
31
  s.add_dependency "rails", ">= 3.2"
32
32
  s.add_dependency "rainbow", "~> 3.0"
33
+ s.add_dependency "webpacker", ">= 4.0"
33
34
 
34
35
  s.add_development_dependency "awesome_print"
35
- s.add_development_dependency "bundler", "~> 1"
36
+ s.add_development_dependency "bundler", "~> 2"
36
37
  s.add_development_dependency "coveralls"
37
38
  s.add_development_dependency "gem-release"
38
39
  s.add_development_dependency "generator_spec"
@@ -41,14 +42,12 @@ Gem::Specification.new do |s|
41
42
  s.add_development_dependency "pry-byebug"
42
43
  s.add_development_dependency "pry-doc"
43
44
  s.add_development_dependency "pry-rescue"
44
- s.add_development_dependency "pry-stack_explorer"
45
45
  s.add_development_dependency "pry-state"
46
- s.add_development_dependency "pry-toys"
47
46
  s.add_development_dependency "rails", "~> 5.2"
48
47
 
49
48
  s.add_development_dependency "rake", "~> 10.0"
50
49
  s.add_development_dependency "rspec"
51
- s.add_development_dependency "rubocop", "~> 0.61.1"
50
+ s.add_development_dependency "rubocop", "0.85.0"
52
51
 
53
52
  s.post_install_message = '
54
53
  --------------------------------------------------------------------------------
data/tsconfig.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "allowJs": true,
4
+ "esModuleInterop": true,
5
+ "jsx": "react",
6
+ "lib": ["dom", "es2015"],
7
+ "module": "CommonJS",
8
+ "noImplicitAny": true,
9
+ "outDir": "node_package/lib",
10
+ "strict": true,
11
+ "target": "es5"
12
+ },
13
+ "include": ["node_package/src/**/*"]
14
+ }
@@ -1,4 +1,6 @@
1
1
  /**
2
+ * TODO: THIS SHOULD BE REMOVED
3
+ *
2
4
  * Allow defaults for the config/webpacker.yml. Thee values in this file MUST match values
3
5
  * in https://github.com/rails/webpacker/blob/master/lib/install/config/webpacker.yml
4
6
  *
@@ -11,7 +13,6 @@ const { env } = require('process');
11
13
  const { safeLoad } = require('js-yaml');
12
14
  const { readFileSync } = require('fs');
13
15
 
14
-
15
16
  function removeOuterSlashes(string) {
16
17
  return string.replace(/^\/*/, '').replace(/\/*$/, '');
17
18
  }
@@ -48,7 +49,7 @@ function formatPublicPath(settings) {
48
49
  */
49
50
  const configLoader = (configPath) => {
50
51
  // Some test environments might not have the NODE_ENV set, so we'll have fallbacks.
51
- const configEnv = (env.NODE_ENV || env.RAILS_ENV || 'development');
52
+ const configEnv = env.NODE_ENV || env.RAILS_ENV || 'development';
52
53
  const ymlConfigPath = join(configPath, 'webpacker.yml');
53
54
  const settings = safeLoad(readFileSync(ymlConfigPath, 'utf8'))[configEnv];
54
55