vite_rails 1.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 (57) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +3 -0
  3. data/CONTRIBUTING.md +34 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +64 -0
  6. data/lib/install/binstubs.rb +6 -0
  7. data/lib/install/template.rb +62 -0
  8. data/lib/vite_rails.rb +91 -0
  9. data/lib/vite_rails/builder.rb +113 -0
  10. data/lib/vite_rails/commands.rb +68 -0
  11. data/lib/vite_rails/config.rb +106 -0
  12. data/lib/vite_rails/dev_server.rb +23 -0
  13. data/lib/vite_rails/dev_server_proxy.rb +47 -0
  14. data/lib/vite_rails/engine.rb +40 -0
  15. data/lib/vite_rails/helper.rb +41 -0
  16. data/lib/vite_rails/manifest.rb +134 -0
  17. data/lib/vite_rails/runner.rb +56 -0
  18. data/lib/vite_rails/version.rb +5 -0
  19. data/package.json +28 -0
  20. data/package/default.vite.json +15 -0
  21. data/test/builder_test.rb +72 -0
  22. data/test/command_test.rb +35 -0
  23. data/test/configuration_test.rb +80 -0
  24. data/test/dev_server_runner_test.rb +83 -0
  25. data/test/dev_server_test.rb +39 -0
  26. data/test/engine_rake_tasks_test.rb +42 -0
  27. data/test/helper_test.rb +138 -0
  28. data/test/manifest_test.rb +75 -0
  29. data/test/mode_test.rb +21 -0
  30. data/test/mounted_app/Rakefile +6 -0
  31. data/test/mounted_app/test/dummy/Rakefile +5 -0
  32. data/test/mounted_app/test/dummy/bin/rails +5 -0
  33. data/test/mounted_app/test/dummy/bin/rake +5 -0
  34. data/test/mounted_app/test/dummy/config.ru +7 -0
  35. data/test/mounted_app/test/dummy/config/application.rb +12 -0
  36. data/test/mounted_app/test/dummy/config/environment.rb +5 -0
  37. data/test/mounted_app/test/dummy/config/vite.json +20 -0
  38. data/test/mounted_app/test/dummy/package.json +7 -0
  39. data/test/rake_tasks_test.rb +74 -0
  40. data/test/test_app/Rakefile +5 -0
  41. data/test/test_app/app/javascript/entrypoints/application.js +10 -0
  42. data/test/test_app/app/javascript/entrypoints/multi_entry.css +4 -0
  43. data/test/test_app/app/javascript/entrypoints/multi_entry.js +4 -0
  44. data/test/test_app/bin/vite +17 -0
  45. data/test/test_app/config.ru +7 -0
  46. data/test/test_app/config/application.rb +13 -0
  47. data/test/test_app/config/environment.rb +6 -0
  48. data/test/test_app/config/vite.json +20 -0
  49. data/test/test_app/config/vite_public_root.yml +20 -0
  50. data/test/test_app/package.json +13 -0
  51. data/test/test_app/public/vite/manifest.json +36 -0
  52. data/test/test_app/some.config.js +0 -0
  53. data/test/test_app/yarn.lock +11 -0
  54. data/test/test_helper.rb +34 -0
  55. data/test/vite_runner_test.rb +59 -0
  56. data/test/webpacker_test.rb +15 -0
  57. metadata +234 -0
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require 'rails'
5
+ require 'rails/test_help'
6
+ require 'byebug'
7
+
8
+ require_relative 'test_app/config/environment'
9
+
10
+ Rails.env = 'production'
11
+
12
+ ViteRails.instance = ::ViteRails.new
13
+
14
+ class ViteRails::Test < Minitest::Test
15
+ private
16
+
17
+ def reloaded_config
18
+ ViteRails.instance.instance_variable_set(:@config, nil)
19
+ ViteRails.instance.instance_variable_set(:@dev_server, nil)
20
+ ViteRails.env = {}
21
+ ViteRails.config
22
+ ViteRails.dev_server
23
+ end
24
+
25
+ def with_rails_env(env)
26
+ original = Rails.env
27
+ Rails.env = ActiveSupport::StringInquirer.new(env)
28
+ reloaded_config
29
+ yield
30
+ ensure
31
+ Rails.env = ActiveSupport::StringInquirer.new(original)
32
+ reloaded_config
33
+ end
34
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class ViteRunnerTest < ViteRails::Test
6
+ def setup
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
+ def teardown
12
+ ENV['NODE_ENV'] = @original_node_env
13
+ ENV['RAILS_ENV'] = @original_rails_env
14
+ end
15
+
16
+ def test_run_cmd_via_node_modules
17
+ cmd = ["#{ test_app_path }/node_modules/.bin/vite", 'build', '--mode', 'development']
18
+
19
+ verify_command(cmd, use_node_modules: true)
20
+ end
21
+
22
+ def test_run_cmd_via_yarn
23
+ cmd = ['yarn', 'vite', 'build', '--mode', 'development']
24
+
25
+ verify_command(cmd, use_node_modules: false)
26
+ end
27
+
28
+ def test_run_cmd_argv
29
+ cmd = ["#{ test_app_path }/node_modules/.bin/vite", 'build', '--mode', 'development', '--emptyOutDir']
30
+
31
+ verify_command(cmd, argv: ['--emptyOutDir'])
32
+ end
33
+
34
+ private
35
+
36
+ def test_app_path
37
+ File.expand_path('test_app', __dir__)
38
+ end
39
+
40
+ def verify_command(cmd, use_node_modules: true, argv: [])
41
+ cwd = Dir.pwd
42
+ Dir.chdir(test_app_path)
43
+
44
+ klass = ViteRails::ViteRunner
45
+ instance = klass.new(argv)
46
+ mock = Minitest::Mock.new
47
+ mock.expect(:call, nil, [ViteRails::Compiler.env, *cmd])
48
+
49
+ klass.stub(:new, instance) do
50
+ instance.stub(:executable_exists?, use_node_modules) do
51
+ Kernel.stub(:exec, mock) { klass.run(argv) }
52
+ end
53
+ end
54
+
55
+ mock.verify
56
+ ensure
57
+ Dir.chdir(cwd)
58
+ end
59
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class ViteRailsTest < ViteRails::Test
6
+ def test_config_params
7
+ assert_equal Rails.env, ViteRails.config.mode
8
+ assert_equal ViteRails.instance.root_path, ViteRails.config.root_path
9
+ assert_equal ViteRails.instance.config_path, ViteRails.config.config_path
10
+
11
+ with_rails_env('test') do
12
+ assert_equal 'test', ViteRails.config.env
13
+ end
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,234 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vite_rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Máximo Mussini
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-01-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '5.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rack-proxy
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.6.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.6.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: railties
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '5.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '5.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: zeitwerk
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 1.3.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.3.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.93.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.93.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-performance
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description:
112
+ email:
113
+ - maximomussini@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - CHANGELOG.md
119
+ - CONTRIBUTING.md
120
+ - LICENSE.txt
121
+ - README.md
122
+ - lib/install/binstubs.rb
123
+ - lib/install/template.rb
124
+ - lib/vite_rails.rb
125
+ - lib/vite_rails/builder.rb
126
+ - lib/vite_rails/commands.rb
127
+ - lib/vite_rails/config.rb
128
+ - lib/vite_rails/dev_server.rb
129
+ - lib/vite_rails/dev_server_proxy.rb
130
+ - lib/vite_rails/engine.rb
131
+ - lib/vite_rails/helper.rb
132
+ - lib/vite_rails/manifest.rb
133
+ - lib/vite_rails/runner.rb
134
+ - lib/vite_rails/version.rb
135
+ - package.json
136
+ - package/default.vite.json
137
+ - test/builder_test.rb
138
+ - test/command_test.rb
139
+ - test/configuration_test.rb
140
+ - test/dev_server_runner_test.rb
141
+ - test/dev_server_test.rb
142
+ - test/engine_rake_tasks_test.rb
143
+ - test/helper_test.rb
144
+ - test/manifest_test.rb
145
+ - test/mode_test.rb
146
+ - test/mounted_app/Rakefile
147
+ - test/mounted_app/test/dummy/Rakefile
148
+ - test/mounted_app/test/dummy/bin/rails
149
+ - test/mounted_app/test/dummy/bin/rake
150
+ - test/mounted_app/test/dummy/config.ru
151
+ - test/mounted_app/test/dummy/config/application.rb
152
+ - test/mounted_app/test/dummy/config/environment.rb
153
+ - test/mounted_app/test/dummy/config/vite.json
154
+ - test/mounted_app/test/dummy/package.json
155
+ - test/rake_tasks_test.rb
156
+ - test/test_app/Rakefile
157
+ - test/test_app/app/javascript/entrypoints/application.js
158
+ - test/test_app/app/javascript/entrypoints/multi_entry.css
159
+ - test/test_app/app/javascript/entrypoints/multi_entry.js
160
+ - test/test_app/bin/vite
161
+ - test/test_app/config.ru
162
+ - test/test_app/config/application.rb
163
+ - test/test_app/config/environment.rb
164
+ - test/test_app/config/vite.json
165
+ - test/test_app/config/vite_public_root.yml
166
+ - test/test_app/package.json
167
+ - test/test_app/public/vite/manifest.json
168
+ - test/test_app/some.config.js
169
+ - test/test_app/yarn.lock
170
+ - test/test_helper.rb
171
+ - test/vite_runner_test.rb
172
+ - test/webpacker_test.rb
173
+ homepage: https://github.com/ElMassimo/vite_rails
174
+ licenses:
175
+ - MIT
176
+ metadata:
177
+ source_code_uri: https://github.com/ElMassimo/vite_rails/tree/v1.0.0
178
+ changelog_uri: https://github.com/ElMassimo/vite_rails/blob/v1.0.0/CHANGELOG.md
179
+ post_install_message:
180
+ rdoc_options: []
181
+ require_paths:
182
+ - lib
183
+ required_ruby_version: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: 2.4.0
188
+ required_rubygems_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ requirements: []
194
+ rubygems_version: 3.1.4
195
+ signing_key:
196
+ specification_version: 4
197
+ summary: Use Vite in Rails and bring joy to your JavaScript experience
198
+ test_files:
199
+ - test/builder_test.rb
200
+ - test/command_test.rb
201
+ - test/configuration_test.rb
202
+ - test/dev_server_runner_test.rb
203
+ - test/dev_server_test.rb
204
+ - test/engine_rake_tasks_test.rb
205
+ - test/helper_test.rb
206
+ - test/manifest_test.rb
207
+ - test/mode_test.rb
208
+ - test/mounted_app/Rakefile
209
+ - test/mounted_app/test/dummy/Rakefile
210
+ - test/mounted_app/test/dummy/bin/rails
211
+ - test/mounted_app/test/dummy/bin/rake
212
+ - test/mounted_app/test/dummy/config.ru
213
+ - test/mounted_app/test/dummy/config/application.rb
214
+ - test/mounted_app/test/dummy/config/environment.rb
215
+ - test/mounted_app/test/dummy/config/vite.json
216
+ - test/mounted_app/test/dummy/package.json
217
+ - test/rake_tasks_test.rb
218
+ - test/test_app/Rakefile
219
+ - test/test_app/app/javascript/entrypoints/application.js
220
+ - test/test_app/app/javascript/entrypoints/multi_entry.css
221
+ - test/test_app/app/javascript/entrypoints/multi_entry.js
222
+ - test/test_app/bin/vite
223
+ - test/test_app/config.ru
224
+ - test/test_app/config/application.rb
225
+ - test/test_app/config/environment.rb
226
+ - test/test_app/config/vite.json
227
+ - test/test_app/config/vite_public_root.yml
228
+ - test/test_app/package.json
229
+ - test/test_app/public/vite/manifest.json
230
+ - test/test_app/some.config.js
231
+ - test/test_app/yarn.lock
232
+ - test/test_helper.rb
233
+ - test/vite_runner_test.rb
234
+ - test/webpacker_test.rb