vite_rails 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -1
  3. data/CONTRIBUTING.md +0 -1
  4. data/lib/install/template.rb +1 -1
  5. data/lib/tasks/vite/build.rake +1 -5
  6. data/lib/tasks/vite/clean.rake +1 -3
  7. data/lib/tasks/vite/verify_install.rake +3 -3
  8. data/lib/vite_rails.rb +14 -25
  9. data/lib/vite_rails/builder.rb +11 -4
  10. data/lib/vite_rails/commands.rb +50 -10
  11. data/lib/vite_rails/config.rb +35 -23
  12. data/lib/vite_rails/dev_server_proxy.rb +27 -18
  13. data/lib/vite_rails/helper.rb +4 -2
  14. data/lib/vite_rails/manifest.rb +4 -3
  15. data/lib/vite_rails/runner.rb +2 -5
  16. data/lib/vite_rails/version.rb +1 -1
  17. data/package.json +1 -1
  18. data/test/builder_test.rb +27 -22
  19. data/test/commands_test.rb +67 -0
  20. data/test/configuration_test.rb +88 -46
  21. data/test/dev_server_proxy_test.rb +101 -0
  22. data/test/dev_server_test.rb +0 -30
  23. data/test/engine_rake_tasks_test.rb +55 -17
  24. data/test/helper_test.rb +37 -105
  25. data/test/manifest_test.rb +33 -29
  26. data/test/mode_test.rb +6 -11
  27. data/test/mounted_app/test/dummy/config/vite.json +5 -11
  28. data/test/mounted_app/test/dummy/package.json +2 -1
  29. data/test/mounted_app/test/dummy/yarn.lock +208 -0
  30. data/test/rake_tasks_test.rb +5 -19
  31. data/test/runner_test.rb +31 -0
  32. data/test/test_app/app/{javascript → frontend}/entrypoints/application.js +0 -0
  33. data/test/test_app/config/vite.json +0 -2
  34. data/test/test_app/config/vite_additional_paths.json +5 -0
  35. data/test/test_app/config/vite_public_dir.json +5 -0
  36. data/test/test_app/public/vite-production/manifest.json +22 -0
  37. data/test/test_helper.rb +48 -14
  38. metadata +21 -23
  39. data/test/command_test.rb +0 -35
  40. data/test/dev_server_runner_test.rb +0 -83
  41. data/test/test_app/app/javascript/entrypoints/multi_entry.css +0 -4
  42. data/test/test_app/app/javascript/entrypoints/multi_entry.js +0 -4
  43. data/test/test_app/config/vite_public_root.yml +0 -20
  44. data/test/test_app/public/vite/manifest.json +0 -36
  45. data/test/vite_runner_test.rb +0 -59
  46. data/test/webpacker_test.rb +0 -15
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "private": true,
3
3
  "dependencies": {
4
- "vite_rails": "file:../../../../"
4
+ "vite": "^2.0.0-beta.34",
5
+ "vite-plugin-ruby": "^1.0.2"
5
6
  },
6
7
  "license": "MIT"
7
8
  }
@@ -0,0 +1,208 @@
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ "@nodelib/fs.scandir@2.1.4":
6
+ version "2.1.4"
7
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
8
+ integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
9
+ dependencies:
10
+ "@nodelib/fs.stat" "2.0.4"
11
+ run-parallel "^1.1.9"
12
+
13
+ "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
14
+ version "2.0.4"
15
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
16
+ integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
17
+
18
+ "@nodelib/fs.walk@^1.2.3":
19
+ version "1.2.6"
20
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
21
+ integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
22
+ dependencies:
23
+ "@nodelib/fs.scandir" "2.1.4"
24
+ fastq "^1.6.0"
25
+
26
+ braces@^3.0.1:
27
+ version "3.0.2"
28
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
29
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
30
+ dependencies:
31
+ fill-range "^7.0.1"
32
+
33
+ colorette@^1.2.1:
34
+ version "1.2.1"
35
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
36
+ integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
37
+
38
+ esbuild@^0.8.26:
39
+ version "0.8.34"
40
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.34.tgz#16b4ac58f74c821d2c5a8c2f0585ca96a38ab4e6"
41
+ integrity sha512-tnr0V1ooakYr1aRLXQLzCn2GVG1kBTW3FWpRyC+NgrR3ntsouVpJOlTOV0BS4YLATx3/c+x3h/uBq9lWJlUAtQ==
42
+
43
+ fast-glob@^3.2.4:
44
+ version "3.2.5"
45
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661"
46
+ integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==
47
+ dependencies:
48
+ "@nodelib/fs.stat" "^2.0.2"
49
+ "@nodelib/fs.walk" "^1.2.3"
50
+ glob-parent "^5.1.0"
51
+ merge2 "^1.3.0"
52
+ micromatch "^4.0.2"
53
+ picomatch "^2.2.1"
54
+
55
+ fastq@^1.6.0:
56
+ version "1.10.0"
57
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb"
58
+ integrity sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==
59
+ dependencies:
60
+ reusify "^1.0.4"
61
+
62
+ fill-range@^7.0.1:
63
+ version "7.0.1"
64
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
65
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
66
+ dependencies:
67
+ to-regex-range "^5.0.1"
68
+
69
+ fsevents@~2.1.2:
70
+ version "2.1.3"
71
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
72
+ integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
73
+
74
+ function-bind@^1.1.1:
75
+ version "1.1.1"
76
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
77
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
78
+
79
+ glob-parent@^5.1.0:
80
+ version "5.1.1"
81
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
82
+ integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
83
+ dependencies:
84
+ is-glob "^4.0.1"
85
+
86
+ has@^1.0.3:
87
+ version "1.0.3"
88
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
89
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
90
+ dependencies:
91
+ function-bind "^1.1.1"
92
+
93
+ is-core-module@^2.1.0:
94
+ version "2.2.0"
95
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
96
+ integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
97
+ dependencies:
98
+ has "^1.0.3"
99
+
100
+ is-extglob@^2.1.1:
101
+ version "2.1.1"
102
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
103
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
104
+
105
+ is-glob@^4.0.1:
106
+ version "4.0.1"
107
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
108
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
109
+ dependencies:
110
+ is-extglob "^2.1.1"
111
+
112
+ is-number@^7.0.0:
113
+ version "7.0.0"
114
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
115
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
116
+
117
+ merge2@^1.3.0:
118
+ version "1.4.1"
119
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
120
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
121
+
122
+ micromatch@^4.0.2:
123
+ version "4.0.2"
124
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
125
+ integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
126
+ dependencies:
127
+ braces "^3.0.1"
128
+ picomatch "^2.0.5"
129
+
130
+ nanoid@^3.1.20:
131
+ version "3.1.20"
132
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788"
133
+ integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==
134
+
135
+ path-parse@^1.0.6:
136
+ version "1.0.6"
137
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
138
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
139
+
140
+ picomatch@^2.0.5, picomatch@^2.2.1:
141
+ version "2.2.2"
142
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
143
+ integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
144
+
145
+ postcss@^8.2.1:
146
+ version "8.2.4"
147
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04"
148
+ integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==
149
+ dependencies:
150
+ colorette "^1.2.1"
151
+ nanoid "^3.1.20"
152
+ source-map "^0.6.1"
153
+
154
+ resolve@^1.19.0:
155
+ version "1.19.0"
156
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
157
+ integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
158
+ dependencies:
159
+ is-core-module "^2.1.0"
160
+ path-parse "^1.0.6"
161
+
162
+ reusify@^1.0.4:
163
+ version "1.0.4"
164
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
165
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
166
+
167
+ rollup@^2.35.1:
168
+ version "2.37.1"
169
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.37.1.tgz#aa7aadffd75c80393f9314f9857e851b0ffd34e7"
170
+ integrity sha512-V3ojEeyGeSdrMSuhP3diBb06P+qV4gKQeanbDv+Qh/BZbhdZ7kHV0xAt8Yjk4GFshq/WjO7R4c7DFM20AwTFVQ==
171
+ optionalDependencies:
172
+ fsevents "~2.1.2"
173
+
174
+ run-parallel@^1.1.9:
175
+ version "1.1.10"
176
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef"
177
+ integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==
178
+
179
+ source-map@^0.6.1:
180
+ version "0.6.1"
181
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
182
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
183
+
184
+ to-regex-range@^5.0.1:
185
+ version "5.0.1"
186
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
187
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
188
+ dependencies:
189
+ is-number "^7.0.0"
190
+
191
+ vite-plugin-ruby@^1.0.2:
192
+ version "1.0.2"
193
+ resolved "https://registry.yarnpkg.com/vite-plugin-ruby/-/vite-plugin-ruby-1.0.2.tgz#9c193982c912b6399d9b269136e533201b445fb1"
194
+ integrity sha512-m+CIyHiZElaW4TpdtyVQXnvLbz5ovYSwo5bTgr/ODLPMgmAqTaZu9GImPkIMZwp8PmBWnHT8h6vUtnIq0yFLOg==
195
+ dependencies:
196
+ fast-glob "^3.2.4"
197
+
198
+ vite@^2.0.0-beta.34:
199
+ version "2.0.0-beta.36"
200
+ resolved "https://registry.yarnpkg.com/vite/-/vite-2.0.0-beta.36.tgz#ccecac854ded0b7c0fe14c52c0460e1c23a9c70b"
201
+ integrity sha512-+Q/Twq1/tpNQIZl0HSFTqiEuP7lXj+6H/f9q63+s5I2K/sqgSUajL3PL7W9uUUIv9dYpJ1eLqkO42ppH9w9Ldw==
202
+ dependencies:
203
+ esbuild "^0.8.26"
204
+ postcss "^8.2.1"
205
+ resolve "^1.19.0"
206
+ rollup "^2.35.1"
207
+ optionalDependencies:
208
+ fsevents "~2.1.2"
@@ -5,37 +5,23 @@ require 'test_helper'
5
5
  class RakeTasksTest < Minitest::Test
6
6
  def test_rake_tasks
7
7
  output = Dir.chdir(test_app_path) { `rake -T` }
8
- assert_includes output, 'vite_rails'
9
- assert_includes output, 'vite:check_binstubs'
10
- assert_includes output, 'vite:check_node'
11
- assert_includes output, 'vite:check_yarn'
8
+ assert_includes output, 'vite:build'
12
9
  assert_includes output, 'vite:clean'
13
10
  assert_includes output, 'vite:clobber'
14
- assert_includes output, 'vite:compile'
15
11
  assert_includes output, 'vite:install'
12
+ assert_includes output, 'vite:install_dependencies'
16
13
  assert_includes output, 'vite:verify_install'
17
14
  end
18
15
 
19
16
  def test_rake_task_vite_check_binstubs
20
- output = Dir.chdir(test_app_path) { `rake vite:check_binstubs 2>&1` }
17
+ output = Dir.chdir(test_app_path) { `rake vite:verify_install 2>&1` }
21
18
  refute_includes output, 'vite binstub not found.'
22
19
  end
23
20
 
24
- def test_check_node_version
25
- output = Dir.chdir(test_app_path) { `rake vite:check_node 2>&1` }
26
- refute_includes output, 'ViteRails requires Node.js'
27
- end
28
-
29
- def test_check_yarn_version
30
- output = Dir.chdir(test_app_path) { `rake vite:check_yarn 2>&1` }
31
- refute_includes output, 'Yarn not installed'
32
- refute_includes output, 'ViteRails requires Yarn'
33
- end
34
-
35
21
  def test_rake_vite_install_dependencies_in_non_production_environments
36
22
  assert_includes test_app_dev_dependencies, 'right-pad'
37
23
 
38
- ViteRails.with_node_env('test') do
24
+ ViteRails.commands.send(:with_node_env, 'test') do
39
25
  Dir.chdir(test_app_path) do
40
26
  `bundle exec rake vite:install_dependencies`
41
27
  end
@@ -46,7 +32,7 @@ class RakeTasksTest < Minitest::Test
46
32
  end
47
33
 
48
34
  def test_rake_vite_install_dependencies_in_production_environment
49
- ViteRails.with_node_env('production') do
35
+ ViteRails.commands.send(:with_node_env, 'production') do
50
36
  Dir.chdir(test_app_path) do
51
37
  `bundle exec rake vite:install_dependencies`
52
38
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class RunnerTest < ViteRails::Test
6
+ def test_dev_server_command
7
+ assert_run_command(flags: ['--mode', 'production'])
8
+ end
9
+
10
+ def test_dev_server_command_via_yarn
11
+ assert_run_command(flags: ['--mode', 'production'], use_yarn: true)
12
+ end
13
+
14
+ def test_dev_server_command_with_argument
15
+ assert_run_command('--quiet', flags: ['--mode', 'production'])
16
+ end
17
+
18
+ def test_build_command
19
+ assert_run_command('build', flags: ['--mode', 'production'])
20
+ end
21
+
22
+ def test_build_command_via_yarn
23
+ assert_run_command('build', flags: ['--mode', 'production'], use_yarn: true)
24
+ end
25
+
26
+ def test_build_command_with_argument
27
+ with_rails_env('development') do
28
+ assert_run_command('build', '--emptyOutDir', flags: ['--mode', 'development'])
29
+ end
30
+ end
31
+ end
@@ -10,11 +10,9 @@
10
10
  "publicOutputDir": "vite-test"
11
11
  },
12
12
  "production": {
13
- "autoBuild": false,
14
13
  "publicOutputDir": "vite-production"
15
14
  },
16
15
  "staging": {
17
- "autoBuild": false,
18
16
  "publicOutputDir": "vite-staging"
19
17
  }
20
18
  }
@@ -0,0 +1,5 @@
1
+ {
2
+ "all": {
3
+ "watchAdditionalPaths": ["config/*"]
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "all": {
3
+ "publicDir": "../public"
4
+ }
5
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "application.js": {
3
+ "file": "assets/application.a0ba047e.js",
4
+ "imports": [
5
+ "assets/example_import.8e1fddc0.js"
6
+ ]
7
+ },
8
+ "example_import.js": {
9
+ "file": "assets/example_import.8e1fddc0.js",
10
+ "imports": []
11
+ },
12
+ "colored.js": {
13
+ "file": "assets/colored.1173bfe0.js",
14
+ "imports": []
15
+ },
16
+ "application.css": {
17
+ "file": "assets/application.cccfef34.css"
18
+ },
19
+ "colored.css": {
20
+ "file": "assets/colored.84277fd6.css"
21
+ }
22
+ }
@@ -1,34 +1,68 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'simplecov'
4
+ SimpleCov.start {
5
+ add_filter '/test/'
6
+ }
7
+
3
8
  require 'minitest/autorun'
4
9
  require 'rails'
5
10
  require 'rails/test_help'
6
- require 'byebug'
11
+ require 'pry-byebug'
7
12
 
8
13
  require_relative 'test_app/config/environment'
9
14
 
10
15
  Rails.env = 'production'
11
16
 
12
- ViteRails.instance = ::ViteRails.new
17
+ ViteRails.instance = ViteRails.new
13
18
 
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
19
+ module ViteRailsTestHelpers
20
+ def refresh_config(env_variables = ViteRails.load_env_variables)
21
+ ViteRails.env = env_variables
22
+ (ViteRails.instance = ViteRails.new).config
23
23
  end
24
24
 
25
25
  def with_rails_env(env)
26
26
  original = Rails.env
27
27
  Rails.env = ActiveSupport::StringInquirer.new(env)
28
- reloaded_config
29
- yield
28
+ yield(refresh_config)
30
29
  ensure
31
30
  Rails.env = ActiveSupport::StringInquirer.new(original)
32
- reloaded_config
31
+ refresh_config
32
+ end
33
+
34
+ def test_app_path
35
+ File.expand_path('test_app', __dir__)
36
+ end
37
+
38
+ def with_dev_server_running(&block)
39
+ ViteRails.instance.stub(:dev_server_running?, true, &block)
40
+ end
41
+ end
42
+
43
+ class ViteRails::Test < Minitest::Test
44
+ include ViteRailsTestHelpers
45
+
46
+ private
47
+
48
+ def assert_run_command(*argv, use_yarn: false, flags: [])
49
+ command = use_yarn ? %w[yarn vite] : ["#{ test_app_path }/node_modules/.bin/vite"]
50
+ cwd = Dir.pwd
51
+ Dir.chdir(test_app_path)
52
+
53
+ klass = ViteRails::Runner
54
+ instance = klass.new(argv)
55
+ mock = Minitest::Mock.new
56
+ mock.expect(:call, nil, [ViteRails.env, *command, *argv, *flags])
57
+
58
+ klass.stub(:new, instance) do
59
+ instance.stub(:executable_exists?, !use_yarn) do
60
+ Kernel.stub(:exec, mock) { ViteRails.run(argv) }
61
+ end
62
+ end
63
+
64
+ mock.verify
65
+ ensure
66
+ Dir.chdir(cwd)
33
67
  end
34
68
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vite_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Máximo Mussini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-21 00:00:00.000000000 Z
11
+ date: 2021-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -147,9 +147,9 @@ files:
147
147
  - package.json
148
148
  - package/default.vite.json
149
149
  - test/builder_test.rb
150
- - test/command_test.rb
150
+ - test/commands_test.rb
151
151
  - test/configuration_test.rb
152
- - test/dev_server_runner_test.rb
152
+ - test/dev_server_proxy_test.rb
153
153
  - test/dev_server_test.rb
154
154
  - test/engine_rake_tasks_test.rb
155
155
  - test/helper_test.rb
@@ -164,30 +164,29 @@ files:
164
164
  - test/mounted_app/test/dummy/config/environment.rb
165
165
  - test/mounted_app/test/dummy/config/vite.json
166
166
  - test/mounted_app/test/dummy/package.json
167
+ - test/mounted_app/test/dummy/yarn.lock
167
168
  - test/rake_tasks_test.rb
169
+ - test/runner_test.rb
168
170
  - test/test_app/Rakefile
169
- - test/test_app/app/javascript/entrypoints/application.js
170
- - test/test_app/app/javascript/entrypoints/multi_entry.css
171
- - test/test_app/app/javascript/entrypoints/multi_entry.js
171
+ - test/test_app/app/frontend/entrypoints/application.js
172
172
  - test/test_app/bin/vite
173
173
  - test/test_app/config.ru
174
174
  - test/test_app/config/application.rb
175
175
  - test/test_app/config/environment.rb
176
176
  - test/test_app/config/vite.json
177
- - test/test_app/config/vite_public_root.yml
177
+ - test/test_app/config/vite_additional_paths.json
178
+ - test/test_app/config/vite_public_dir.json
178
179
  - test/test_app/package.json
179
- - test/test_app/public/vite/manifest.json
180
+ - test/test_app/public/vite-production/manifest.json
180
181
  - test/test_app/some.config.js
181
182
  - test/test_app/yarn.lock
182
183
  - test/test_helper.rb
183
- - test/vite_runner_test.rb
184
- - test/webpacker_test.rb
185
184
  homepage: https://github.com/ElMassimo/vite_rails
186
185
  licenses:
187
186
  - MIT
188
187
  metadata:
189
- source_code_uri: https://github.com/ElMassimo/vite_rails/tree/v1.0.8
190
- changelog_uri: https://github.com/ElMassimo/vite_rails/blob/v1.0.8/CHANGELOG.md
188
+ source_code_uri: https://github.com/ElMassimo/vite_rails/tree/v1.0.9
189
+ changelog_uri: https://github.com/ElMassimo/vite_rails/blob/v1.0.9/CHANGELOG.md
191
190
  post_install_message:
192
191
  rdoc_options: []
193
192
  require_paths:
@@ -196,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
196
195
  requirements:
197
196
  - - ">="
198
197
  - !ruby/object:Gem::Version
199
- version: 2.4.0
198
+ version: 2.5.0
200
199
  required_rubygems_version: !ruby/object:Gem::Requirement
201
200
  requirements:
202
201
  - - ">="
@@ -209,9 +208,9 @@ specification_version: 4
209
208
  summary: Use Vite in Rails and bring joy to your JavaScript experience
210
209
  test_files:
211
210
  - test/builder_test.rb
212
- - test/command_test.rb
211
+ - test/commands_test.rb
213
212
  - test/configuration_test.rb
214
- - test/dev_server_runner_test.rb
213
+ - test/dev_server_proxy_test.rb
215
214
  - test/dev_server_test.rb
216
215
  - test/engine_rake_tasks_test.rb
217
216
  - test/helper_test.rb
@@ -226,21 +225,20 @@ test_files:
226
225
  - test/mounted_app/test/dummy/config/environment.rb
227
226
  - test/mounted_app/test/dummy/config/vite.json
228
227
  - test/mounted_app/test/dummy/package.json
228
+ - test/mounted_app/test/dummy/yarn.lock
229
229
  - test/rake_tasks_test.rb
230
+ - test/runner_test.rb
230
231
  - test/test_app/Rakefile
231
- - test/test_app/app/javascript/entrypoints/application.js
232
- - test/test_app/app/javascript/entrypoints/multi_entry.css
233
- - test/test_app/app/javascript/entrypoints/multi_entry.js
232
+ - test/test_app/app/frontend/entrypoints/application.js
234
233
  - test/test_app/bin/vite
235
234
  - test/test_app/config.ru
236
235
  - test/test_app/config/application.rb
237
236
  - test/test_app/config/environment.rb
238
237
  - test/test_app/config/vite.json
239
- - test/test_app/config/vite_public_root.yml
238
+ - test/test_app/config/vite_additional_paths.json
239
+ - test/test_app/config/vite_public_dir.json
240
240
  - test/test_app/package.json
241
- - test/test_app/public/vite/manifest.json
241
+ - test/test_app/public/vite-production/manifest.json
242
242
  - test/test_app/some.config.js
243
243
  - test/test_app/yarn.lock
244
244
  - test/test_helper.rb
245
- - test/vite_runner_test.rb
246
- - test/webpacker_test.rb