shakapacker 6.1.1 → 6.2.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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/.node-version +1 -1
  3. data/CHANGELOG.md +16 -2
  4. data/Gemfile.lock +1 -1
  5. data/README.md +31 -15
  6. data/docs/customizing_babel_config.md +2 -0
  7. data/docs/style_loader_vs_mini_css.md +48 -0
  8. data/docs/using_esbuild_loader.md +1 -1
  9. data/docs/using_swc_loader.md +2 -2
  10. data/docs/v6_upgrade.md +69 -73
  11. data/lib/install/config/webpacker.yml +14 -0
  12. data/lib/install/template.rb +2 -2
  13. data/lib/webpacker/commands.rb +2 -2
  14. data/lib/webpacker/compiler.rb +1 -1
  15. data/lib/webpacker/configuration.rb +12 -4
  16. data/lib/webpacker/dev_server.rb +11 -2
  17. data/lib/webpacker/helper.rb +0 -7
  18. data/lib/webpacker/instance.rb +1 -1
  19. data/lib/webpacker/manifest.rb +3 -3
  20. data/lib/webpacker/railtie.rb +7 -0
  21. data/lib/webpacker/version.rb +1 -1
  22. data/lib/webpacker/version_checker.rb +152 -0
  23. data/package/__tests__/config.js +11 -0
  24. data/package/config.js +6 -0
  25. data/package/environments/base.js +1 -1
  26. data/package/inliningCss.js +1 -1
  27. data/package/rules/__tests__/file.js +35 -0
  28. data/package/rules/__tests__/index.js +11 -0
  29. data/package/rules/__tests__/raw.js +18 -0
  30. data/package/rules/file.js +2 -17
  31. data/package/rules/raw.js +2 -2
  32. data/package/swc/index.js +3 -3
  33. data/package.json +1 -1
  34. data/test/configuration_test.rb +24 -3
  35. data/test/fixtures/beta_package.json +13 -0
  36. data/test/fixtures/git_url_package.json +13 -0
  37. data/test/fixtures/github_url_package.json +13 -0
  38. data/test/fixtures/normal_package.json +13 -0
  39. data/test/fixtures/relative_path_package.json +13 -0
  40. data/test/fixtures/semver_caret_package.json +13 -0
  41. data/test/fixtures/semver_tilde_package.json +13 -0
  42. data/test/fixtures/without_package.json +13 -0
  43. data/test/helper_test.rb +12 -12
  44. data/test/test_app/config/webpacker.yml +4 -0
  45. data/test/test_app/config/webpacker_manifest_path.yml +80 -0
  46. data/test/version_checker_test.rb +271 -0
  47. data/test/webpacker_test.rb +15 -0
  48. metadata +28 -3
@@ -0,0 +1,80 @@
1
+ # Note: You must restart bin/webpack-dev-server for changes to take effect
2
+
3
+ default: &default
4
+ source_path: app/packs
5
+ source_entry_path: entrypoints
6
+ public_root_path: public
7
+ public_output_path: packs
8
+ cache_path: tmp/webpacker
9
+ webpack_compile_output: false
10
+
11
+ # Location for manifest.json, defaults to {public_output_path}/manifest.json if unset
12
+ manifest_path: app/packs/manifest.json
13
+
14
+ # Additional paths webpack should look up modules
15
+ # ['app/assets', 'engine/foo/app/assets']
16
+ additional_paths:
17
+ - app/assets
18
+ - /etc/yarn
19
+ - some.config.js
20
+ - app/elm
21
+
22
+ # Reload manifest.json on all requests so we reload latest compiled packs
23
+ cache_manifest: false
24
+
25
+ static_assets_extensions:
26
+ - .jpg
27
+ - .jpeg
28
+ - .png
29
+ - .gif
30
+ - .tiff
31
+ - .ico
32
+ - .svg
33
+
34
+ extensions:
35
+ - .mjs
36
+ - .js
37
+
38
+ development:
39
+ <<: *default
40
+ compile: true
41
+
42
+ # Reference: https://webpack.js.org/configuration/dev-server/
43
+ dev_server:
44
+ https: false
45
+ host: localhost
46
+ port: 3035
47
+ public: localhost:3035
48
+ hmr: false
49
+ overlay: true
50
+ disable_host_check: true
51
+ use_local_ip: false
52
+ pretty: false
53
+
54
+ test:
55
+ <<: *default
56
+ compile: true
57
+
58
+ # Compile test packs to a separate directory
59
+ public_output_path: packs-test
60
+
61
+ production:
62
+ <<: *default
63
+
64
+ # Production depends on precompilation of packs prior to booting for performance.
65
+ compile: false
66
+
67
+ # Cache manifest.json for performance
68
+ cache_manifest: true
69
+
70
+ staging:
71
+ <<: *default
72
+
73
+ # Production depends on precompilation of packs prior to booting for performance.
74
+ compile: false
75
+
76
+ # Cache manifest.json for performance
77
+ cache_manifest: true
78
+
79
+ # Compile staging packs to a separate directory
80
+ public_output_path: packs-staging
@@ -0,0 +1,271 @@
1
+ require "test_helper"
2
+ require "webpacker/version"
3
+
4
+ class NodePackageVersionDouble
5
+ attr_reader :raw, :major_minor_patch
6
+
7
+ def initialize(raw: nil, major_minor_patch: nil, semver_wildcard: false, skip_processing: false)
8
+ @raw = raw
9
+ @major_minor_patch = major_minor_patch
10
+ @semver_wildcard = semver_wildcard
11
+ @skip_processing = skip_processing
12
+ end
13
+
14
+ def semver_wildcard?
15
+ @semver_wildcard
16
+ end
17
+
18
+ def skip_processing?
19
+ @skip_processing
20
+ end
21
+ end
22
+
23
+ class VersionCheckerTest < Minitest::Test
24
+ def check_version(node_package_version, stub_gem_version = Webpacker::VERSION, stub_config = true)
25
+ version_checker = Webpacker::VersionChecker.new(node_package_version)
26
+ version_checker.stub :gem_version, stub_gem_version do
27
+ Webpacker.config.stub :ensure_consistent_versioning?, stub_config do
28
+ version_checker.raise_if_gem_and_node_package_versions_differ
29
+ end
30
+ end
31
+ end
32
+
33
+ def test_message_printed_if_consistency_check_disabled_and_mismatch
34
+ node_package_version = NodePackageVersionDouble.new(raw: "6.1.0", major_minor_patch: ["6", "1", "0"])
35
+
36
+ out, err = capture_io do
37
+ check_version(node_package_version, "6.0.0", false)
38
+ end
39
+
40
+ assert_match \
41
+ "Webpacker::VersionChecker - Version mismatch detected",
42
+ err
43
+ end
44
+
45
+ def test_message_printed_if_consistency_check_disabled_and_semver
46
+ node_package_version = NodePackageVersionDouble.new(raw: "^6.1.0", major_minor_patch: ["6", "1", "0"], semver_wildcard: true)
47
+
48
+ out, err = capture_io do
49
+ check_version(node_package_version, "6.1.0", false)
50
+ end
51
+
52
+ assert_match \
53
+ "Webpacker::VersionChecker - Semver wildcard detected",
54
+ err
55
+ end
56
+
57
+ def test_raise_on_different_major_version
58
+ node_package_version = NodePackageVersionDouble.new(raw: "6.1.0", major_minor_patch: ["6", "1", "0"])
59
+
60
+ error = assert_raises do
61
+ check_version(node_package_version, "7.0.0")
62
+ end
63
+
64
+ assert_match \
65
+ "**ERROR** Webpacker: Webpacker gem and node package versions do not match",
66
+ error.message
67
+ end
68
+
69
+ def test_raise_on_different_minor_version
70
+ node_package_version = NodePackageVersionDouble.new(raw: "6.1.0", major_minor_patch: ["6", "1", "0"])
71
+
72
+ error = assert_raises do
73
+ check_version(node_package_version, "6.2.0")
74
+ end
75
+
76
+ assert_match \
77
+ "**ERROR** Webpacker: Webpacker gem and node package versions do not match",
78
+ error.message
79
+ end
80
+
81
+ def test_raise_on_different_patch_version
82
+ node_package_version = NodePackageVersionDouble.new(raw: "6.1.1", major_minor_patch: ["6", "1", "1"])
83
+
84
+ error = assert_raises do
85
+ check_version(node_package_version, "6.1.2")
86
+ end
87
+
88
+ assert_match \
89
+ "**ERROR** Webpacker: Webpacker gem and node package versions do not match",
90
+ error.message
91
+ end
92
+
93
+ def test_raise_on_semver_wildcard
94
+ node_package_version = NodePackageVersionDouble.new(raw: "^6.0.0", major_minor_patch: ["6", "0", "0"], semver_wildcard: true)
95
+
96
+ error = assert_raises do
97
+ check_version(node_package_version, "6.0.0")
98
+ end
99
+
100
+ assert_match \
101
+ "**ERROR** Webpacker: Your node package version for shakapacker contains a ^ or ~",
102
+ error.message
103
+ end
104
+
105
+ def test_no_raise_on_matching_versions
106
+ node_package_version = NodePackageVersionDouble.new(raw: "6.0.0", major_minor_patch: ["6", "0", "0"])
107
+
108
+ assert_silent do
109
+ check_version(node_package_version, "6.0.0")
110
+ end
111
+ end
112
+
113
+ def test_no_raise_on_matching_versions_beta
114
+ node_package_version = NodePackageVersionDouble.new(raw: "6.0.0-beta.1", major_minor_patch: ["6", "0", "0"])
115
+
116
+ assert_silent do
117
+ check_version(node_package_version, "6.0.0.beta.1")
118
+ end
119
+ end
120
+
121
+ def test_no_raise_on_no_package
122
+ node_package_version = NodePackageVersionDouble.new(raw: nil, skip_processing: true)
123
+
124
+ assert_silent do
125
+ check_version(node_package_version, "6.0.0")
126
+ end
127
+ end
128
+
129
+ def test_no_raise_on_skipped_path
130
+ node_package_version = NodePackageVersionDouble.new(raw: "../shakapacker", skip_processing: true)
131
+
132
+ assert_silent do
133
+ check_version(node_package_version, "6.0.0")
134
+ end
135
+ end
136
+ end
137
+
138
+ class NodePackageVersionTest < Minitest::Test
139
+ def node_package_version(fixture_version: "normal")
140
+ file_path = File.expand_path("fixtures/#{fixture_version}_package.json", __dir__)
141
+ Webpacker::VersionChecker::NodePackageVersion.new(file_path)
142
+ end
143
+
144
+ def test_normal_package_raw
145
+ assert_equal "6.0.0", node_package_version.raw
146
+ end
147
+
148
+ def test_normal_package_major_minor_patch
149
+ assert_equal ["6", "0", "0"], node_package_version.major_minor_patch
150
+ end
151
+
152
+ def test_normal_package_skip_processing
153
+ assert_equal false, node_package_version.skip_processing?
154
+ end
155
+
156
+ def test_normal_package_semver_wildcard
157
+ assert_equal false, node_package_version.semver_wildcard?
158
+ end
159
+
160
+ def test_beta_package_raw
161
+ assert_equal "6.0.0-beta.1", node_package_version(fixture_version: "beta").raw
162
+ end
163
+
164
+ def test_beta_package_major_minor_patch
165
+ assert_equal ["6", "0", "0"], node_package_version(fixture_version: "beta").major_minor_patch
166
+ end
167
+
168
+ def test_beta_package_skip_processing
169
+ assert_equal false, node_package_version(fixture_version: "beta").skip_processing?
170
+ end
171
+
172
+ def test_beta_package_semver_wildcard
173
+ assert_equal false, node_package_version(fixture_version: "beta").semver_wildcard?
174
+ end
175
+
176
+ def test_semver_caret_package_raw
177
+ assert_equal "^6.0.0", node_package_version(fixture_version: "semver_caret").raw
178
+ end
179
+
180
+ def test_semver_caret_package_major_minor_patch
181
+ assert_equal ["6", "0", "0"], node_package_version(fixture_version: "semver_caret").major_minor_patch
182
+ end
183
+
184
+ def test_semver_caret_package_skip_processing
185
+ assert_equal false, node_package_version(fixture_version: "semver_caret").skip_processing?
186
+ end
187
+
188
+ def test_semver_caret_package_semver_wildcard
189
+ assert_equal true, node_package_version(fixture_version: "semver_caret").semver_wildcard?
190
+ end
191
+
192
+ def test_semver_tilde_package_raw
193
+ assert_equal "~6.0.0", node_package_version(fixture_version: "semver_tilde").raw
194
+ end
195
+
196
+ def test_semver_tilde_package_major_minor_patch
197
+ assert_equal ["6", "0", "0"], node_package_version(fixture_version: "semver_tilde").major_minor_patch
198
+ end
199
+
200
+ def test_semver_tilde_package_skip_processing
201
+ assert_equal false, node_package_version(fixture_version: "semver_tilde").skip_processing?
202
+ end
203
+
204
+ def test_semver_tilde_package_semver_wildcard
205
+ assert_equal true, node_package_version(fixture_version: "semver_tilde").semver_wildcard?
206
+ end
207
+
208
+ def test_relative_path_package_raw
209
+ assert_equal "../shakapacker", node_package_version(fixture_version: "relative_path").raw
210
+ end
211
+
212
+ def test_relative_path_package_major_minor_patch
213
+ assert_nil node_package_version(fixture_version: "relative_path").major_minor_patch
214
+ end
215
+
216
+ def test_relative_path_package_skip_processing
217
+ assert_equal true, node_package_version(fixture_version: "relative_path").skip_processing?
218
+ end
219
+
220
+ def test_relative_path_package_semver_wildcard
221
+ assert_equal false, node_package_version(fixture_version: "relative_path").semver_wildcard?
222
+ end
223
+
224
+ def test_git_url_package_raw
225
+ assert_equal "git://github.com/shakapacker/shakapacker.git", node_package_version(fixture_version: "git_url").raw
226
+ end
227
+
228
+ def test_git_url_package_major_minor_patch
229
+ assert_nil node_package_version(fixture_version: "git_url").major_minor_patch
230
+ end
231
+
232
+ def test_git_url_package_skip_processing
233
+ assert_equal true, node_package_version(fixture_version: "git_url").skip_processing?
234
+ end
235
+
236
+ def test_git_url_package_semver_wildcard
237
+ assert_equal false, node_package_version(fixture_version: "git_url").semver_wildcard?
238
+ end
239
+
240
+ def test_github_url_package_raw
241
+ assert_equal "shakapacker/shakapacker#feature/branch", node_package_version(fixture_version: "github_url").raw
242
+ end
243
+
244
+ def test_github_url_package_major_minor_patch
245
+ assert_nil node_package_version(fixture_version: "github_url").major_minor_patch
246
+ end
247
+
248
+ def test_github_url_package_skip_processing
249
+ assert_equal true, node_package_version(fixture_version: "github_url").skip_processing?
250
+ end
251
+
252
+ def test_github_url_package_semver_wildcard
253
+ assert_equal false, node_package_version(fixture_version: "github_url").semver_wildcard?
254
+ end
255
+
256
+ def test_without_package_raw
257
+ assert_equal "", node_package_version(fixture_version: "without").raw
258
+ end
259
+
260
+ def test_without_package_major_minor_patch
261
+ assert_nil node_package_version(fixture_version: "without").major_minor_patch
262
+ end
263
+
264
+ def test_without_package_skip_processing
265
+ assert_equal true, node_package_version(fixture_version: "without").skip_processing?
266
+ end
267
+
268
+ def test_without_package_semver_wildcard
269
+ assert_equal false, node_package_version(fixture_version: "without").semver_wildcard?
270
+ end
271
+ end
@@ -23,11 +23,26 @@ class WebpackerTest < Webpacker::Test
23
23
  def dev_server.https?; true; end
24
24
  def dev_server.hmr?; true; end
25
25
  def dev_server.running?; true; end
26
+ def dev_server.inline_css?; true; end
26
27
  Webpacker.instance.stub(:dev_server, dev_server) do
27
28
  assert Webpacker.inlining_css?
28
29
  end
29
30
  end
30
31
 
32
+ def test_explicit_no_inline_css_with_hmr
33
+ dev_server = Webpacker::DevServer.new({})
34
+ def dev_server.host; "localhost"; end
35
+ def dev_server.port; "3035"; end
36
+ def dev_server.pretty?; false; end
37
+ def dev_server.https?; true; end
38
+ def dev_server.hmr?; true; end
39
+ def dev_server.running?; true; end
40
+ def dev_server.inline_css?; false; end
41
+ Webpacker.instance.stub(:dev_server, dev_server) do
42
+ assert !Webpacker.inlining_css?
43
+ end
44
+ end
45
+
31
46
  def test_app_autoload_paths_cleanup
32
47
  assert_empty $test_app_autoload_paths_in_initializer
33
48
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shakapacker
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.1
4
+ version: 6.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-02-07 00:00:00.000000000 Z
13
+ date: 2022-03-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -142,6 +142,7 @@ files:
142
142
  - docs/customizing_babel_config.md
143
143
  - docs/deployment.md
144
144
  - docs/developing_webpacker.md
145
+ - docs/style_loader_vs_mini_css.md
145
146
  - docs/troubleshooting.md
146
147
  - docs/using_esbuild_loader.md
147
148
  - docs/using_swc_loader.md
@@ -191,6 +192,7 @@ files:
191
192
  - lib/webpacker/railtie.rb
192
193
  - lib/webpacker/runner.rb
193
194
  - lib/webpacker/version.rb
195
+ - lib/webpacker/version_checker.rb
194
196
  - lib/webpacker/webpack_runner.rb
195
197
  - package.json
196
198
  - package/__tests__/config.js
@@ -214,6 +216,9 @@ files:
214
216
  - package/esbuild/index.js
215
217
  - package/index.js
216
218
  - package/inliningCss.js
219
+ - package/rules/__tests__/file.js
220
+ - package/rules/__tests__/index.js
221
+ - package/rules/__tests__/raw.js
217
222
  - package/rules/babel.js
218
223
  - package/rules/coffee.js
219
224
  - package/rules/css.js
@@ -237,6 +242,14 @@ files:
237
242
  - test/dev_server_test.rb
238
243
  - test/engine_rake_tasks_test.rb
239
244
  - test/env_test.rb
245
+ - test/fixtures/beta_package.json
246
+ - test/fixtures/git_url_package.json
247
+ - test/fixtures/github_url_package.json
248
+ - test/fixtures/normal_package.json
249
+ - test/fixtures/relative_path_package.json
250
+ - test/fixtures/semver_caret_package.json
251
+ - test/fixtures/semver_tilde_package.json
252
+ - test/fixtures/without_package.json
240
253
  - test/helper_test.rb
241
254
  - test/manifest_test.rb
242
255
  - test/mounted_app/Rakefile
@@ -261,6 +274,7 @@ files:
261
274
  - test/test_app/config/initializers/inspect_autoload_paths.rb
262
275
  - test/test_app/config/webpack/webpack.config.js
263
276
  - test/test_app/config/webpacker.yml
277
+ - test/test_app/config/webpacker_manifest_path.yml
264
278
  - test/test_app/config/webpacker_other_location.yml
265
279
  - test/test_app/config/webpacker_public_root.yml
266
280
  - test/test_app/package.json
@@ -268,6 +282,7 @@ files:
268
282
  - test/test_app/some.config.js
269
283
  - test/test_app/yarn.lock
270
284
  - test/test_helper.rb
285
+ - test/version_checker_test.rb
271
286
  - test/webpack_runner_test.rb
272
287
  - test/webpacker_test.rb
273
288
  - webpacker.gemspec
@@ -276,7 +291,7 @@ homepage: https://github.com/shakacode/shakapacker
276
291
  licenses:
277
292
  - MIT
278
293
  metadata:
279
- source_code_uri: https://github.com/shakacode/shakapacker/tree/v6.1.1
294
+ source_code_uri: https://github.com/shakacode/shakapacker/tree/v6.2.0
280
295
  post_install_message:
281
296
  rdoc_options: []
282
297
  require_paths:
@@ -304,6 +319,14 @@ test_files:
304
319
  - test/dev_server_test.rb
305
320
  - test/engine_rake_tasks_test.rb
306
321
  - test/env_test.rb
322
+ - test/fixtures/beta_package.json
323
+ - test/fixtures/git_url_package.json
324
+ - test/fixtures/github_url_package.json
325
+ - test/fixtures/normal_package.json
326
+ - test/fixtures/relative_path_package.json
327
+ - test/fixtures/semver_caret_package.json
328
+ - test/fixtures/semver_tilde_package.json
329
+ - test/fixtures/without_package.json
307
330
  - test/helper_test.rb
308
331
  - test/manifest_test.rb
309
332
  - test/mounted_app/Rakefile
@@ -328,6 +351,7 @@ test_files:
328
351
  - test/test_app/config/initializers/inspect_autoload_paths.rb
329
352
  - test/test_app/config/webpack/webpack.config.js
330
353
  - test/test_app/config/webpacker.yml
354
+ - test/test_app/config/webpacker_manifest_path.yml
331
355
  - test/test_app/config/webpacker_other_location.yml
332
356
  - test/test_app/config/webpacker_public_root.yml
333
357
  - test/test_app/package.json
@@ -335,5 +359,6 @@ test_files:
335
359
  - test/test_app/some.config.js
336
360
  - test/test_app/yarn.lock
337
361
  - test/test_helper.rb
362
+ - test/version_checker_test.rb
338
363
  - test/webpack_runner_test.rb
339
364
  - test/webpacker_test.rb