vite_rails 1.0.6 → 1.0.11

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/CONTRIBUTING.md +0 -1
  4. data/README.md +43 -70
  5. data/lib/install/config/vite.config.ts +1 -1
  6. data/lib/install/javascript/entrypoints/application.js +8 -4
  7. data/lib/install/template.rb +3 -3
  8. data/lib/tasks/vite/build.rake +12 -6
  9. data/lib/tasks/vite/clean.rake +1 -3
  10. data/lib/tasks/vite/install_dependencies.rake +3 -9
  11. data/lib/tasks/vite/verify_install.rake +3 -3
  12. data/lib/vite_rails.rb +23 -34
  13. data/lib/vite_rails/builder.rb +11 -13
  14. data/lib/vite_rails/commands.rb +51 -10
  15. data/lib/vite_rails/config.rb +65 -35
  16. data/lib/vite_rails/dev_server_proxy.rb +26 -18
  17. data/lib/vite_rails/helper.rb +17 -8
  18. data/lib/vite_rails/manifest.rb +14 -12
  19. data/lib/vite_rails/runner.rb +3 -6
  20. data/lib/vite_rails/version.rb +1 -1
  21. data/package.json +9 -2
  22. data/package/default.vite.json +2 -1
  23. data/test/builder_test.rb +27 -22
  24. data/test/commands_test.rb +67 -0
  25. data/test/config_test.rb +133 -0
  26. data/test/dev_server_proxy_test.rb +102 -0
  27. data/test/dev_server_test.rb +0 -30
  28. data/test/engine_rake_tasks_test.rb +56 -17
  29. data/test/helper_test.rb +37 -105
  30. data/test/manifest_test.rb +33 -29
  31. data/test/mode_test.rb +6 -11
  32. data/test/mounted_app/test/dummy/config/vite.json +5 -11
  33. data/test/mounted_app/test/dummy/package.json +5 -4
  34. data/test/mounted_app/test/dummy/yarn.lock +208 -0
  35. data/test/rake_tasks_test.rb +7 -21
  36. data/test/runner_test.rb +31 -0
  37. data/test/test_app/app/frontend/entrypoints/application.js +2 -0
  38. data/test/test_app/config/vite.json +0 -2
  39. data/test/test_app/config/vite_additional_paths.json +5 -0
  40. data/test/test_app/config/vite_public_dir.json +5 -0
  41. data/test/test_app/public/vite-production/manifest.json +22 -0
  42. data/test/test_helper.rb +48 -14
  43. metadata +23 -25
  44. data/test/command_test.rb +0 -35
  45. data/test/configuration_test.rb +0 -80
  46. data/test/dev_server_runner_test.rb +0 -83
  47. data/test/test_app/app/javascript/entrypoints/application.js +0 -10
  48. data/test/test_app/app/javascript/entrypoints/multi_entry.css +0 -4
  49. data/test/test_app/app/javascript/entrypoints/multi_entry.js +0 -4
  50. data/test/test_app/config/vite_public_root.yml +0 -20
  51. data/test/test_app/public/vite/manifest.json +0 -36
  52. data/test/vite_runner_test.rb +0 -59
  53. data/test/webpacker_test.rb +0 -15
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "private": true,
3
- "dependencies": {
4
- "vite_rails": "file:../../../../"
5
- },
6
- "license": "MIT"
3
+ "license": "MIT",
4
+ "devDependencies": {
5
+ "vite": "^2.0.0-beta.46",
6
+ "vite-plugin-ruby": "^1.0.5"
7
+ }
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.34:
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.4:
192
+ version "1.0.4"
193
+ resolved "https://registry.yarnpkg.com/vite-plugin-ruby/-/vite-plugin-ruby-1.0.4.tgz#0f4a263fd79a082a84917a54b0881f02a3bbfa61"
194
+ integrity sha512-WJE+c2TGLwcbSHzkqcwCmPcHxasUnXmx5Bi1HPO89Yo+Mggi8t/fO/WIPUF7NxSlp9q2lq5/L3Vnkt3R/tolPg==
195
+ dependencies:
196
+ fast-glob "^3.2.4"
197
+
198
+ vite@^2.0.0-beta.46:
199
+ version "2.0.0-beta.46"
200
+ resolved "https://registry.yarnpkg.com/vite/-/vite-2.0.0-beta.46.tgz#9c0d35019c350fbebd17f84c4e7243fffccd1819"
201
+ integrity sha512-RiiJdjiFDaM9youfcTFnCztstwBXHHSdsSATZVD5A4QSb39KJRTpSKoveFo0PT7VJM5HjOP7QC/sVOqX011F6Q==
202
+ dependencies:
203
+ esbuild "^0.8.34"
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,14 +32,14 @@ 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
53
39
  end
54
40
 
55
- refute_includes installed_node_module_names, 'right-pad',
56
- 'Expected only production dependencies to be installed'
41
+ assert_includes installed_node_module_names, 'right-pad',
42
+ 'Expected development dependencies to be installed as well'
57
43
  end
58
44
 
59
45
  private
@@ -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
@@ -0,0 +1,2 @@
1
+ /* eslint no-console:0 */
2
+ console.log('Hello World from ViteRails')
@@ -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.config.to_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