shakapacker 7.3.0.beta.1 → 8.0.0.pre.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (231) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintignore +1 -1
  3. data/.eslintrc.js +29 -8
  4. data/.github/PULL_REQUEST_TEMPLATE.md +10 -3
  5. data/.github/workflows/dummy.yml +6 -1
  6. data/.github/workflows/generator.yml +14 -18
  7. data/.github/workflows/node.yml +56 -0
  8. data/.github/workflows/ruby.yml +29 -17
  9. data/.node-version +1 -1
  10. data/.rubocop.yml +1 -0
  11. data/CHANGELOG.md +56 -5
  12. data/README.md +101 -48
  13. data/Rakefile +1 -7
  14. data/docs/customizing_babel_config.md +2 -2
  15. data/docs/deployment.md +13 -6
  16. data/docs/react.md +7 -13
  17. data/docs/troubleshooting.md +4 -4
  18. data/docs/using_esbuild_loader.md +1 -1
  19. data/docs/using_swc_loader.md +1 -1
  20. data/docs/v6_upgrade.md +1 -1
  21. data/docs/v8_upgrade.md +148 -0
  22. data/gemfiles/Gemfile-rails.7.1.x +12 -0
  23. data/jest.config.js +4 -0
  24. data/lib/install/config/shakapacker.yml +2 -2
  25. data/lib/install/template.rb +36 -30
  26. data/lib/shakapacker/base_strategy.rb +2 -1
  27. data/lib/shakapacker/compiler.rb +6 -21
  28. data/lib/shakapacker/configuration.rb +2 -46
  29. data/lib/shakapacker/deprecation_helper.rb +0 -78
  30. data/lib/shakapacker/dev_server.rb +1 -16
  31. data/lib/shakapacker/dev_server_runner.rb +2 -21
  32. data/lib/shakapacker/env.rb +1 -1
  33. data/lib/shakapacker/helper.rb +3 -3
  34. data/lib/shakapacker/instance.rb +1 -3
  35. data/lib/shakapacker/manifest.rb +1 -1
  36. data/lib/shakapacker/railtie.rb +7 -0
  37. data/lib/shakapacker/runner.rb +4 -18
  38. data/lib/shakapacker/utils/manager.rb +58 -0
  39. data/lib/shakapacker/utils/misc.rb +0 -12
  40. data/lib/shakapacker/version.rb +1 -1
  41. data/lib/shakapacker/version_checker.rb +9 -30
  42. data/lib/shakapacker/webpack_runner.rb +2 -21
  43. data/lib/shakapacker.rb +0 -2
  44. data/lib/tasks/shakapacker/check_binstubs.rake +12 -26
  45. data/lib/tasks/shakapacker/check_manager.rake +3 -8
  46. data/lib/tasks/shakapacker/info.rake +6 -15
  47. data/package/babel/preset.js +15 -15
  48. data/package/config.js +15 -19
  49. data/package/dev_server.js +4 -4
  50. data/package/env.js +19 -17
  51. data/package/environments/base.js +41 -24
  52. data/package/environments/development.js +6 -6
  53. data/package/environments/production.js +16 -16
  54. data/package/environments/test.js +1 -1
  55. data/package/esbuild/index.js +6 -6
  56. data/package/index.d.ts +0 -2
  57. data/package/index.js +17 -46
  58. data/package/rules/babel.js +6 -8
  59. data/package/rules/coffee.js +2 -2
  60. data/package/rules/css.js +1 -1
  61. data/package/rules/erb.js +4 -4
  62. data/package/rules/esbuild.js +5 -7
  63. data/package/rules/file.js +14 -7
  64. data/package/rules/index.js +11 -11
  65. data/package/rules/jscommon.js +8 -5
  66. data/package/rules/less.js +10 -9
  67. data/package/rules/raw.js +1 -1
  68. data/package/rules/sass.js +4 -4
  69. data/package/rules/stylus.js +12 -7
  70. data/package/rules/swc.js +5 -7
  71. data/package/swc/index.js +10 -10
  72. data/package/utils/configPath.js +3 -18
  73. data/package/utils/defaultConfigPath.js +1 -1
  74. data/package/utils/{get_style_rule.js → getStyleRule.js} +6 -6
  75. data/package/utils/helpers.js +2 -43
  76. data/package/utils/inliningCss.js +4 -3
  77. data/package/utils/snakeToCamelCase.js +5 -0
  78. data/package/webpackDevServerConfig.js +28 -25
  79. data/package.json +12 -18
  80. data/prettier.config.js +4 -0
  81. data/shakapacker.gemspec +1 -1
  82. data/spec/dummy/app/javascript/packs/application.js +1 -1
  83. data/spec/dummy/config/application.rb +3 -0
  84. data/spec/dummy/config/initializers/react_on_rails.rb +2 -2
  85. data/spec/dummy/config/shakapacker.yml +3 -4
  86. data/spec/dummy/config/webpack/commonWebpackConfig.js +0 -1
  87. data/spec/dummy/config/webpack/webpack.config.js +1 -1
  88. data/spec/dummy/package.json +2 -1
  89. data/spec/dummy/yarn.lock +2 -3
  90. data/spec/fixtures/github_url_package-lock.v1.json +1 -1
  91. data/spec/fixtures/github_url_package-lock.v2.json +2 -2
  92. data/spec/fixtures/github_url_package.json +1 -1
  93. data/spec/fixtures/github_url_pnpm-lock.v7.yaml +1 -1
  94. data/spec/fixtures/github_url_pnpm-lock.v8.yaml +1 -1
  95. data/spec/fixtures/github_url_yarn.v1.lock +1 -1
  96. data/spec/fixtures/github_url_yarn.v2.lock +2 -2
  97. data/spec/generator_specs/e2e_template/template.rb +15 -28
  98. data/spec/generator_specs/generator_spec.rb +6 -136
  99. data/spec/mounted_app/test/dummy/config/webpacker.yml +0 -1
  100. data/spec/shakapacker/compiler_spec.rb +1 -3
  101. data/spec/shakapacker/configuration_spec.rb +4 -56
  102. data/spec/shakapacker/dev_server_runner_spec.rb +19 -102
  103. data/spec/shakapacker/dev_server_spec.rb +1 -16
  104. data/spec/shakapacker/engine_rake_tasks_spec.rb +1 -16
  105. data/spec/shakapacker/helper_spec.rb +3 -3
  106. data/spec/shakapacker/instance_spec.rb +1 -3
  107. data/spec/shakapacker/rake_tasks_spec.rb +2 -14
  108. data/spec/shakapacker/shakapacker_spec.rb +0 -1
  109. data/spec/shakapacker/test_app/config/shakapacker_css_extract_ignore_order_warnings.yml +0 -1
  110. data/spec/shakapacker/test_app/config/shakapacker_manifest_path.yml +0 -1
  111. data/spec/shakapacker/test_app/config/shakapacker_nested_entries.yml +0 -1
  112. data/spec/shakapacker/test_app/config/shakapacker_other_location.yml +0 -1
  113. data/spec/shakapacker/test_app/package.json +2 -1
  114. data/spec/shakapacker/utils_manager_spec.rb +125 -0
  115. data/spec/shakapacker/version_checker_spec.rb +5 -5
  116. data/spec/shakapacker/webpack_runner_spec.rb +19 -28
  117. data/spec/support/package_json_helpers.rb +7 -4
  118. data/test/helpers.js +67 -0
  119. data/test/package/config.test.js +50 -0
  120. data/test/package/dev_server.test.js +44 -0
  121. data/test/package/development.test.js +43 -0
  122. data/test/package/env.test.js +57 -0
  123. data/test/package/environments/base.test.js +105 -0
  124. data/test/package/environments/development.test.js +50 -0
  125. data/test/package/environments/production.test.js +106 -0
  126. data/test/package/index.test.js +45 -0
  127. data/test/package/production.test.js +32 -0
  128. data/test/package/rules/babel.test.js +58 -0
  129. data/test/package/rules/esbuild.test.js +59 -0
  130. data/test/package/rules/file.test.js +81 -0
  131. data/test/package/rules/index.test.js +7 -0
  132. data/test/package/rules/raw.test.js +12 -0
  133. data/test/package/rules/swc.test.js +59 -0
  134. data/test/package/staging.test.js +31 -0
  135. data/test/package/test.test.js +28 -0
  136. data/yarn.lock +1278 -421
  137. metadata +50 -100
  138. data/.github/workflows/jest.yml +0 -33
  139. data/.github/workflows/js-lint.yml +0 -33
  140. data/.github/workflows/rubocop.yml +0 -28
  141. data/.github/workflows/ruby-backward-compatibility.yml +0 -51
  142. data/lib/install/package.json +0 -15
  143. data/lib/tasks/shakapacker/check_yarn.rake +0 -34
  144. data/lib/tasks/shakapacker/yarn_install.rake +0 -24
  145. data/lib/tasks/webpacker/binstubs.rake +0 -9
  146. data/lib/tasks/webpacker/check_binstubs.rake +0 -9
  147. data/lib/tasks/webpacker/check_node.rake +0 -9
  148. data/lib/tasks/webpacker/check_yarn.rake +0 -9
  149. data/lib/tasks/webpacker/clean.rake +0 -9
  150. data/lib/tasks/webpacker/clobber.rake +0 -11
  151. data/lib/tasks/webpacker/compile.rake +0 -9
  152. data/lib/tasks/webpacker/info.rake +0 -9
  153. data/lib/tasks/webpacker/install.rake +0 -9
  154. data/lib/tasks/webpacker/verify_config.rake +0 -9
  155. data/lib/tasks/webpacker/verify_install.rake +0 -9
  156. data/lib/tasks/webpacker/yarn_install.rake +0 -9
  157. data/lib/tasks/webpacker.rake +0 -20
  158. data/lib/webpacker/dev_server_runner.rb +0 -9
  159. data/lib/webpacker/webpack_runner.rb +0 -9
  160. data/lib/webpacker.rb +0 -4
  161. data/package/__tests__/config-bc.js +0 -27
  162. data/package/__tests__/config.js +0 -46
  163. data/package/__tests__/dev_server-bc.js +0 -46
  164. data/package/__tests__/dev_server.js +0 -46
  165. data/package/__tests__/development-bc.js +0 -66
  166. data/package/__tests__/development.js +0 -66
  167. data/package/__tests__/env-bc.js +0 -59
  168. data/package/__tests__/env.js +0 -59
  169. data/package/__tests__/index-bc.js +0 -22
  170. data/package/__tests__/index.js +0 -46
  171. data/package/__tests__/production-bc.js +0 -51
  172. data/package/__tests__/production.js +0 -51
  173. data/package/__tests__/staging-bc.js +0 -53
  174. data/package/__tests__/staging.js +0 -53
  175. data/package/__tests__/test-bc.js +0 -43
  176. data/package/__tests__/test.js +0 -43
  177. data/package/environments/__tests__/base-bc.js +0 -107
  178. data/package/environments/__tests__/base.js +0 -107
  179. data/package/environments/__tests__/development.js +0 -53
  180. data/package/environments/__tests__/production.js +0 -92
  181. data/package/rules/__tests__/__utils__/webpack.js +0 -50
  182. data/package/rules/__tests__/babel.js +0 -63
  183. data/package/rules/__tests__/esbuild.js +0 -64
  184. data/package/rules/__tests__/file.js +0 -79
  185. data/package/rules/__tests__/index.js +0 -7
  186. data/package/rules/__tests__/raw.js +0 -18
  187. data/package/rules/__tests__/swc.js +0 -63
  188. data/package/utils/snakeToCamelCase +0 -7
  189. data/spec/backward_compatibility_specs/command_spec.rb +0 -116
  190. data/spec/backward_compatibility_specs/compiler_spec.rb +0 -59
  191. data/spec/backward_compatibility_specs/compiler_strategy_spec.rb +0 -24
  192. data/spec/backward_compatibility_specs/configuration_spec.rb +0 -294
  193. data/spec/backward_compatibility_specs/dev_server_runner_spec.rb +0 -206
  194. data/spec/backward_compatibility_specs/dev_server_spec.rb +0 -47
  195. data/spec/backward_compatibility_specs/digest_strategy_spec.rb +0 -38
  196. data/spec/backward_compatibility_specs/engine_rake_tasks_spec.rb +0 -67
  197. data/spec/backward_compatibility_specs/env_spec.rb +0 -23
  198. data/spec/backward_compatibility_specs/helper_spec.rb +0 -243
  199. data/spec/backward_compatibility_specs/instance_spec.rb +0 -31
  200. data/spec/backward_compatibility_specs/manifest_spec.rb +0 -100
  201. data/spec/backward_compatibility_specs/mtime_strategy_spec.rb +0 -55
  202. data/spec/backward_compatibility_specs/rake_tasks_spec.rb +0 -41
  203. data/spec/backward_compatibility_specs/spec_helper_initializer.rb +0 -24
  204. data/spec/backward_compatibility_specs/webpack_runner_spec.rb +0 -86
  205. data/spec/backward_compatibility_specs/webpacker_spec.rb +0 -41
  206. data/spec/backward_compatibility_specs/webpacker_test_app/.gitignore +0 -2
  207. data/spec/backward_compatibility_specs/webpacker_test_app/Rakefile +0 -3
  208. data/spec/backward_compatibility_specs/webpacker_test_app/app/packs/entrypoints/application.js +0 -10
  209. data/spec/backward_compatibility_specs/webpacker_test_app/app/packs/entrypoints/generated/something.js +0 -2
  210. data/spec/backward_compatibility_specs/webpacker_test_app/app/packs/entrypoints/multi_entry.css +0 -4
  211. data/spec/backward_compatibility_specs/webpacker_test_app/app/packs/entrypoints/multi_entry.js +0 -4
  212. data/spec/backward_compatibility_specs/webpacker_test_app/bin/webpacker +0 -13
  213. data/spec/backward_compatibility_specs/webpacker_test_app/bin/webpacker-dev-server +0 -13
  214. data/spec/backward_compatibility_specs/webpacker_test_app/config/application.rb +0 -11
  215. data/spec/backward_compatibility_specs/webpacker_test_app/config/environment.rb +0 -4
  216. data/spec/backward_compatibility_specs/webpacker_test_app/config/initializers/inspect_autoload_paths.rb +0 -1
  217. data/spec/backward_compatibility_specs/webpacker_test_app/config/webpack/webpack.config.js +0 -0
  218. data/spec/backward_compatibility_specs/webpacker_test_app/config/webpacker.yml +0 -83
  219. data/spec/backward_compatibility_specs/webpacker_test_app/config/webpacker_css_extract_ignore_order_warnings.yml +0 -84
  220. data/spec/backward_compatibility_specs/webpacker_test_app/config/webpacker_defaults_fallback.yml +0 -11
  221. data/spec/backward_compatibility_specs/webpacker_test_app/config/webpacker_manifest_path.yml +0 -80
  222. data/spec/backward_compatibility_specs/webpacker_test_app/config/webpacker_nested_entries.yml +0 -83
  223. data/spec/backward_compatibility_specs/webpacker_test_app/config/webpacker_no_precompile.yml +0 -7
  224. data/spec/backward_compatibility_specs/webpacker_test_app/config/webpacker_other_location.yml +0 -85
  225. data/spec/backward_compatibility_specs/webpacker_test_app/config/webpacker_public_root.yml +0 -18
  226. data/spec/backward_compatibility_specs/webpacker_test_app/config.ru +0 -5
  227. data/spec/backward_compatibility_specs/webpacker_test_app/package.json +0 -13
  228. data/spec/backward_compatibility_specs/webpacker_test_app/public/packs/manifest.json +0 -58
  229. data/spec/backward_compatibility_specs/webpacker_test_app/some.config.js +0 -0
  230. data/spec/backward_compatibility_specs/webpacker_test_app/tmp/shakapacker/last-compilation-digest-production +0 -1
  231. data/spec/backward_compatibility_specs/webpacker_test_app/yarn.lock +0 -11
@@ -1,100 +0,0 @@
1
- require_relative "spec_helper_initializer"
2
-
3
- describe "Webpacker::Manifest" do
4
- let(:manifest_path) { File.expand_path File.join(File.dirname(__FILE__), "webpacker_test_app/public/packs", "manifest.json").to_s }
5
-
6
- it "#lookup! raises an exception for a non-existing asset file" do
7
- asset_file = "calendar.js"
8
- expected_error_message = "Shakapacker can't find #{asset_file} in #{manifest_path}"
9
-
10
- allow(Webpacker.config).to receive(:compile?).and_return(false)
11
-
12
- expect {
13
- Webpacker.manifest.lookup!(asset_file)
14
- }.to raise_error(Webpacker::Manifest::MissingEntryError, /#{expected_error_message}/)
15
- end
16
-
17
- it "#lookup! raises an exception for a non-existing asset file with type and without an extension" do
18
- asset_file = "calendar"
19
- expected_error_message = "Shakapacker can't find #{asset_file}.js in #{manifest_path}"
20
-
21
- allow(Webpacker.config).to receive(:compile?).and_return(false)
22
-
23
- expect {
24
- Webpacker.manifest.lookup!(asset_file, type: :javascript)
25
- }.to raise_error(Webpacker::Manifest::MissingEntryError, /#{expected_error_message}/)
26
- end
27
-
28
- it "#lookup! returns the path to the bundled bootstrap.js" do
29
- actual = Webpacker.manifest.lookup!("bootstrap.js")
30
- expected = "/packs/bootstrap-300631c4f0e0f9c865bc.js"
31
-
32
- expect(actual).to eq expected
33
- end
34
-
35
- it "#lookup_pack_with_chunks! returns an array of paths to the bundled bootstrap of type javascript" do
36
- actual = Webpacker.manifest.lookup_pack_with_chunks!("bootstrap", type: :javascript)
37
- expected = ["/packs/bootstrap-300631c4f0e0f9c865bc.js"]
38
-
39
- expect(actual).to eq expected
40
- end
41
-
42
- it "#lookup_with_chunks! returns an array of paths to the bundled bootstrap.js of type javascript" do
43
- actual = Webpacker.manifest.lookup_pack_with_chunks!("bootstrap.js", type: :javascript)
44
- expected = ["/packs/bootstrap-300631c4f0e0f9c865bc.js"]
45
-
46
- expect(actual).to eq expected
47
- end
48
-
49
- it "#lookup_with_chunks! returns an array of paths to the bundled 'print/application' without an extension and in a sub-directory" do
50
- actual = Webpacker.manifest.lookup_pack_with_chunks!("print/application", type: :css)
51
- expected = ["/packs/print/application-983b6c164a47f7ed49cd.css"]
52
-
53
- expect(actual).to eq expected
54
- end
55
-
56
- it "#lookup_with_chunks! returns an array of paths to the bundled 'print/application.css' in a sub-directory" do
57
- actual = Webpacker.manifest.lookup_pack_with_chunks!("print/application.css", type: :css)
58
- expected = ["/packs/print/application-983b6c164a47f7ed49cd.css"]
59
-
60
- expect(actual).to eq expected
61
- end
62
-
63
- it "#lookup returns nil for non-existing asset files" do
64
- expect(Webpacker.manifest.lookup("foo.js")).to be nil
65
- end
66
-
67
- it "#lookup_pack_with_chunks returns nil for non-existing asset files" do
68
- expect(Webpacker.manifest.lookup_pack_with_chunks("foo.js")).to be nil
69
- end
70
-
71
- it "#lookup returns the path for bootstrap.js" do
72
- actual = Webpacker.manifest.lookup("bootstrap.js")
73
- expected = "/packs/bootstrap-300631c4f0e0f9c865bc.js"
74
-
75
- expect(actual).to eq expected
76
- end
77
-
78
- it "#lookup_pack_with_chunks! raises an exception for non-existing asset files" do
79
- asset_file = "calendar"
80
-
81
- expected_error_message = "Shakapacker can't find #{asset_file}.js in #{manifest_path}"
82
-
83
- allow(Webpacker.config).to receive(:compile?).and_return(false)
84
-
85
- expect {
86
- Webpacker.manifest.lookup_pack_with_chunks!(asset_file, type: :javascript)
87
- }.to raise_error(Shakapacker::Manifest::MissingEntryError, /#{expected_error_message}/)
88
- end
89
-
90
- it "#lookup_pack_with_chunks! returns an array of paths to bundled js files with 'application' in their name" do
91
- actual_application_entrypoints = Webpacker.manifest.lookup_pack_with_chunks!("application", type: :javascript)
92
- expected_application_entrypoints = [
93
- "/packs/vendors~application~bootstrap-c20632e7baf2c81200d3.chunk.js",
94
- "/packs/vendors~application-e55f2aae30c07fb6d82a.chunk.js",
95
- "/packs/application-k344a6d59eef8632c9d1.js"
96
- ]
97
-
98
- expect(actual_application_entrypoints).to eq expected_application_entrypoints
99
- end
100
- end
@@ -1,55 +0,0 @@
1
- require_relative "spec_helper_initializer"
2
-
3
- describe "Webpacker::MtimeStrategy" do
4
- let(:mtime_strategy) { Webpacker::MtimeStrategy.new }
5
- let(:manifest_timestamp) { Time.parse("2021-01-01 12:34:56 UTC") }
6
-
7
- describe "#fresh?" do
8
- it "returns false when the manifest is missing" do
9
- latest_timestamp = manifest_timestamp + 3600
10
-
11
- with_stubs(latest_timestamp: latest_timestamp.to_i, manifest_exists: false) do
12
- expect(mtime_strategy.fresh?).to be false
13
- end
14
- end
15
-
16
- it "returns false when the manifest is older" do
17
- latest_timestamp = manifest_timestamp + 3600
18
-
19
- with_stubs(latest_timestamp: latest_timestamp.to_i) do
20
- expect(mtime_strategy.fresh?).to be false
21
- end
22
- end
23
-
24
- it "returns true when the manifest is new" do
25
- latest_timestamp = manifest_timestamp - 3600
26
-
27
- with_stubs(latest_timestamp: latest_timestamp.to_i) do
28
- expect(mtime_strategy.fresh?).to be true
29
- end
30
- end
31
- end
32
-
33
- describe "#stale?" do
34
- it "returns false when #fresh? is true" do
35
- expect(mtime_strategy).to receive(:fresh?).and_return(true)
36
-
37
- expect(mtime_strategy.stale?).to be false
38
- end
39
-
40
- it "returns true when #fresh? is false" do
41
- expect(mtime_strategy).to receive(:fresh?).and_return(false)
42
-
43
- expect(mtime_strategy.stale?).to be true
44
- end
45
- end
46
-
47
- private
48
-
49
- def with_stubs(latest_timestamp:, manifest_exists: true)
50
- allow(mtime_strategy).to receive(:latest_modified_timestamp).and_return(latest_timestamp)
51
- allow(FileTest).to receive(:exist?).and_return(manifest_exists)
52
- allow(File).to receive(:mtime).and_return(manifest_timestamp)
53
- yield
54
- end
55
- end
@@ -1,41 +0,0 @@
1
- require_relative "spec_helper_initializer"
2
-
3
- describe "RakeTasks" do
4
- TEST_APP_PATH = File.expand_path("webpacker_test_app", __dir__)
5
-
6
- it "`rake -T` lists Webpacker tasks" do
7
- output = Dir.chdir(TEST_APP_PATH) { `rake -T` }
8
-
9
- expect(output).to match /webpacker .+DEPRECATED/
10
- expect(output).to match /webpacker:check_binstubs.+DEPRECATED/
11
- expect(output).to match /webpacker:check_node.+DEPRECATED/
12
- expect(output).to match /webpacker:check_yarn.+DEPRECATED/
13
- expect(output).to match /webpacker:clean.+DEPRECATED/
14
- expect(output).to match /webpacker:clobber.+DEPRECATED/
15
- expect(output).to match /webpacker:compile.+DEPRECATED/
16
- expect(output).to match /webpacker:install.+DEPRECATED/
17
- expect(output).to match /webpacker:verify_install.+DEPRECATED/
18
- end
19
-
20
- it "`webpacker:check_binstubs` doesn't get 'webpack binstub not found' error" do
21
- output = Dir.chdir(TEST_APP_PATH) { `rake webpacker:check_binstubs 2>&1` }
22
-
23
- expect(output).to_not include "webpack binstub not found."
24
- expect(output).to include "DEPRECATION"
25
- end
26
-
27
- it "`webpacker:check_node` doesn't get 'webpacker requires Node.js' error" do
28
- output = Dir.chdir(TEST_APP_PATH) { `rake webpacker:check_node 2>&1` }
29
-
30
- expect(output).to_not include "Shakapacker requires Node.js"
31
- expect(output).to include "DEPRECATION"
32
- end
33
-
34
- it "`webpacker:check_yarn` doesn't get error related to yarn" do
35
- output = Dir.chdir(TEST_APP_PATH) { `rake webpacker:check_yarn 2>&1` }
36
-
37
- expect(output).to_not include "Yarn not installed"
38
- expect(output).to_not include "Shakapacker requires Yarn"
39
- expect(output).to include "DEPRECATION"
40
- end
41
- end
@@ -1,24 +0,0 @@
1
- require_relative "webpacker_test_app/config/environment"
2
-
3
- Rails.env = "production"
4
-
5
- Webpacker.instance = ::Webpacker::Instance.new
6
-
7
- def reloaded_config
8
- Webpacker.instance.instance_variable_set(:@env, nil)
9
- Webpacker.instance.instance_variable_set(:@config, nil)
10
- Webpacker.instance.instance_variable_set(:@dev_server, nil)
11
- Webpacker.env
12
- Webpacker.config
13
- Webpacker.dev_server
14
- end
15
-
16
- def with_rails_env(env)
17
- original = Rails.env
18
- Rails.env = ActiveSupport::StringInquirer.new(env)
19
- reloaded_config
20
- yield
21
- ensure
22
- Rails.env = ActiveSupport::StringInquirer.new(original)
23
- reloaded_config
24
- end
@@ -1,86 +0,0 @@
1
- require_relative "spec_helper_initializer"
2
- # Requiring from webpacker directory to ensure old ./bin/webpacker-dev-server works fine
3
- require "webpacker/webpack_runner"
4
-
5
- describe "WebpackRunner" do
6
- before :all do
7
- @original_node_env, ENV["NODE_ENV"] = ENV["NODE_ENV"], "development"
8
- @original_rails_env, ENV["RAILS_ENV"] = ENV["RAILS_ENV"], "development"
9
- end
10
-
11
- after :all do
12
- ENV["NODE_ENV"] = @original_node_env
13
- ENV["RAILS_ENV"] = @original_rails_env
14
- end
15
-
16
- let(:test_app_path) { File.expand_path("./webpacker_test_app", __dir__) }
17
-
18
- NODE_PACKAGE_MANAGERS.each do |fallback_manager|
19
- context "when using package_json with #{fallback_manager} as the manager" do
20
- with_use_package_json_gem(enabled: true, fallback_manager: fallback_manager)
21
-
22
- let(:package_json) { PackageJson.read(test_app_path) }
23
-
24
- require "package_json"
25
-
26
- it "uses the expected package manager", unless: fallback_manager == "yarn_classic" do
27
- cmd = package_json.manager.native_exec_command("webpack", ["--config", "#{test_app_path}/config/webpack/webpack.config.js"])
28
-
29
- manager_name = fallback_manager.split("_")[0]
30
-
31
- expect(cmd).to start_with(manager_name)
32
- end
33
-
34
- it "runs the command using the manager" do
35
- cmd = package_json.manager.native_exec_command("webpack", ["--config", "#{test_app_path}/config/webpack/webpack.config.js"])
36
-
37
- verify_command(cmd)
38
- end
39
-
40
- it "passes on arguments" do
41
- cmd = package_json.manager.native_exec_command("webpack", ["--config", "#{test_app_path}/config/webpack/webpack.config.js", "--watch"])
42
-
43
- verify_command(cmd, argv: (["--watch"]))
44
- end
45
- end
46
- end
47
-
48
- context "when not using package_json" do
49
- with_use_package_json_gem(enabled: false)
50
-
51
- it "supports running via node_modules" do
52
- cmd = ["#{test_app_path}/node_modules/.bin/webpack", "--config", "#{test_app_path}/config/webpack/webpack.config.js"]
53
-
54
- verify_command(cmd, use_node_modules: true)
55
- end
56
-
57
- it "supports running via yarn" do
58
- cmd = ["yarn", "webpack", "--config", "#{test_app_path}/config/webpack/webpack.config.js"]
59
-
60
- verify_command(cmd, use_node_modules: false)
61
- end
62
-
63
- it "passes on arguments" do
64
- cmd = ["#{test_app_path}/node_modules/.bin/webpack", "--config", "#{test_app_path}/config/webpack/webpack.config.js", "--watch"]
65
-
66
- verify_command(cmd, argv: ["--watch"])
67
- end
68
- end
69
-
70
- private
71
-
72
- def verify_command(cmd, use_node_modules: true, argv: [])
73
- Dir.chdir(test_app_path) do
74
- klass = Webpacker::WebpackRunner
75
- instance = klass.new(argv)
76
-
77
- allow(klass).to receive(:new).and_return(instance)
78
- allow(instance).to receive(:node_modules_bin_exist?).and_return(use_node_modules)
79
- allow(Kernel).to receive(:exec)
80
-
81
- klass.run(argv)
82
-
83
- expect(Kernel).to have_received(:exec).with(Webpacker::Compiler.env, *cmd)
84
- end
85
- end
86
- end
@@ -1,41 +0,0 @@
1
- require_relative "spec_helper_initializer"
2
-
3
- describe "webpacker" do
4
- describe "#inline_css?" do
5
- let(:dev_server) { instance_double("Webpacker::DevServer") }
6
-
7
- before :each do
8
- allow(dev_server).to receive(:host).and_return("localhost")
9
- allow(dev_server).to receive(:port).and_return("3035")
10
- allow(dev_server).to receive(:pretty?).and_return(false)
11
- allow(dev_server).to receive(:https?).and_return(true)
12
- allow(dev_server).to receive(:running?).and_return(true)
13
- end
14
-
15
- it "returns nil with disabled dev_server" do
16
- expect(Webpacker.inlining_css?).to be nil
17
- end
18
-
19
- it "returns true with enabled hmr" do
20
- allow(dev_server).to receive(:hmr?).and_return(true)
21
- allow(dev_server).to receive(:inline_css?).and_return(true)
22
-
23
- allow(Webpacker.instance).to receive(:dev_server).and_return(dev_server)
24
-
25
- expect(Webpacker.inlining_css?).to be true
26
- end
27
-
28
- it "returns false with enabled hmr and explicitly setting inline_css to false" do
29
- allow(dev_server).to receive(:hmr?).and_return(true)
30
- allow(dev_server).to receive(:inline_css?).and_return(false)
31
-
32
- allow(Webpacker.instance).to receive(:dev_server).and_return(dev_server)
33
-
34
- expect(Webpacker.inlining_css?).to be false
35
- end
36
- end
37
-
38
- it "has app_autoload_paths cleanup" do
39
- expect($test_app_autoload_paths_in_initializer).to eq []
40
- end
41
- end
@@ -1,3 +0,0 @@
1
- require_relative "config/application"
2
-
3
- Rails.application.load_tasks
@@ -1,10 +0,0 @@
1
- /* eslint no-console:0 */
2
- // This file is automatically compiled by Webpack, along with any other files
3
- // present in this directory. You're encouraged to place your actual application logic in
4
- // a relevant structure within app/packs and only use these pack files to reference
5
- // that code so it'll be compiled.
6
- //
7
- // To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate
8
- // layout file, like app/views/layouts/application.html.erb
9
-
10
- console.log('Hello World from shakapacker')
@@ -1,2 +0,0 @@
1
- /* eslint no-console:0 */
2
- console.log('entrypoints/nested/something')
@@ -1,4 +0,0 @@
1
- /*
2
- * Dummy file #1 for Multi File Entry points: https://webpack.js.org/guides/entry-advanced/
3
- * This file must be named the same
4
- */
@@ -1,4 +0,0 @@
1
- /*
2
- * Dummy file #2 for Multi File Entry points: https://webpack.js.org/guides/entry-advanced/
3
- * This file must be named the same
4
- */
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- ENV["RAILS_ENV"] ||= "development"
4
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
5
-
6
- require "bundler/setup"
7
- require "webpacker"
8
- require "webpacker/webpack_runner"
9
-
10
- APP_ROOT = File.expand_path("..", __dir__)
11
- Dir.chdir(APP_ROOT) do
12
- Webpacker::WebpackRunner.run(ARGV)
13
- end
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- ENV["RAILS_ENV"] ||= "development"
4
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
5
-
6
- require "bundler/setup"
7
- require "webpacker"
8
- require "webpacker/dev_server_runner"
9
-
10
- APP_ROOT = File.expand_path("..", __dir__)
11
- Dir.chdir(APP_ROOT) do
12
- Webpacker::DevServerRunner.run(ARGV)
13
- end
@@ -1,11 +0,0 @@
1
- require "action_controller/railtie"
2
- require "action_view/railtie"
3
- require "shakapacker"
4
-
5
- module WebpackerTestApp
6
- class Application < ::Rails::Application
7
- config.secret_key_base = "abcdef"
8
- config.eager_load = true
9
- config.active_support.test_order = :sorted
10
- end
11
- end
@@ -1,4 +0,0 @@
1
- require_relative "application"
2
-
3
- Rails.backtrace_cleaner.remove_silencers!
4
- Rails.application.initialize!
@@ -1 +0,0 @@
1
- $test_app_autoload_paths_in_initializer = ActiveSupport::Dependencies.autoload_paths
@@ -1,83 +0,0 @@
1
- # Note: You must restart bin/shakapacker-dev-server for changes to take effect
2
-
3
- default: &default
4
- source_path: app/packs
5
- source_entry_path: entrypoints
6
- nested_entries: false
7
- public_root_path: public
8
- public_output_path: packs
9
- cache_path: tmp/webpacker
10
- webpack_compile_output: false
11
- webpack_loader: babel
12
-
13
- # Location for manifest.json, defaults to {public_output_path}/manifest.json if unset
14
- # manifest_path: public/packs/manifest.json
15
-
16
- # Additional paths webpack should look up modules
17
- # ['app/assets', 'engine/foo/app/assets']
18
- additional_paths:
19
- - app/assets
20
- - /etc/yarn
21
- - some.config.js
22
- - app/elm
23
-
24
- # Reload manifest.json on all requests so we reload latest compiled packs
25
- cache_manifest: false
26
-
27
- static_assets_extensions:
28
- - .jpg
29
- - .jpeg
30
- - .png
31
- - .gif
32
- - .tiff
33
- - .ico
34
- - .svg
35
-
36
- extensions:
37
- - .mjs
38
- - .js
39
-
40
- development:
41
- <<: *default
42
- compile: true
43
- ensure_consistent_versioning: true
44
-
45
- # Reference: https://webpack.js.org/configuration/dev-server/
46
- dev_server:
47
- https: false
48
- host: localhost
49
- port: 3035
50
- public: localhost:3035
51
- hmr: true
52
- overlay: true
53
- disable_host_check: true
54
- use_local_ip: false
55
- pretty: false
56
-
57
- test:
58
- <<: *default
59
- compile: true
60
-
61
- # Compile test packs to a separate directory
62
- public_output_path: packs-test
63
-
64
- production:
65
- <<: *default
66
-
67
- # Production depends on precompilation of packs prior to booting for performance.
68
- compile: false
69
-
70
- # Cache manifest.json for performance
71
- cache_manifest: true
72
-
73
- staging:
74
- <<: *default
75
-
76
- # Production depends on precompilation of packs prior to booting for performance.
77
- compile: false
78
-
79
- # Cache manifest.json for performance
80
- cache_manifest: true
81
-
82
- # Compile staging packs to a separate directory
83
- public_output_path: packs-staging
@@ -1,84 +0,0 @@
1
- # Note: You must restart bin/shakapacker-dev-server for changes to take effect
2
-
3
- default: &default
4
- source_path: app/packs
5
- source_entry_path: entrypoints
6
- nested_entries: true
7
- public_root_path: public
8
- public_output_path: packs
9
- cache_path: tmp/webpacker
10
- webpack_compile_output: false
11
- webpack_loader: babel
12
- css_extract_ignore_order_warnings: true
13
-
14
- # Location for manifest.json, defaults to {public_output_path}/manifest.json if unset
15
- # manifest_path: public/packs/manifest.json
16
-
17
- # Additional paths webpack should look up modules
18
- # ['app/assets', 'engine/foo/app/assets']
19
- additional_paths:
20
- - app/assets
21
- - /etc/yarn
22
- - some.config.js
23
- - app/elm
24
-
25
- # Reload manifest.json on all requests so we reload latest compiled packs
26
- cache_manifest: false
27
-
28
- static_assets_extensions:
29
- - .jpg
30
- - .jpeg
31
- - .png
32
- - .gif
33
- - .tiff
34
- - .ico
35
- - .svg
36
-
37
- extensions:
38
- - .mjs
39
- - .js
40
-
41
- development:
42
- <<: *default
43
- compile: true
44
- ensure_consistent_versioning: true
45
-
46
- # Reference: https://webpack.js.org/configuration/dev-server/
47
- dev_server:
48
- https: false
49
- host: localhost
50
- port: 3035
51
- public: localhost:3035
52
- hmr: false
53
- overlay: true
54
- disable_host_check: true
55
- use_local_ip: false
56
- pretty: false
57
-
58
- test:
59
- <<: *default
60
- compile: true
61
-
62
- # Compile test packs to a separate directory
63
- public_output_path: packs-test
64
-
65
- production:
66
- <<: *default
67
-
68
- # Production depends on precompilation of packs prior to booting for performance.
69
- compile: false
70
-
71
- # Cache manifest.json for performance
72
- cache_manifest: true
73
-
74
- staging:
75
- <<: *default
76
-
77
- # Production depends on precompilation of packs prior to booting for performance.
78
- compile: false
79
-
80
- # Cache manifest.json for performance
81
- cache_manifest: true
82
-
83
- # Compile staging packs to a separate directory
84
- public_output_path: packs-staging
@@ -1,11 +0,0 @@
1
- # Note: You must restart bin/shakapacker-dev-server for changes to take effect
2
-
3
- default: &default
4
- # cache_manifest will be fetched from bundled defaults
5
- webpacker_precompile: false
6
-
7
- staging:
8
- <<: *default
9
-
10
- production:
11
- <<: *default