vite_ruby 3.5.0 → 4.0.0.alpha1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -318
- data/README.md +1 -1
- data/default.vite.json +1 -5
- data/exe/vite +0 -2
- data/lib/tasks/vite.rake +10 -51
- data/lib/vite_ruby/build.rb +16 -46
- data/lib/vite_ruby/builder.rb +26 -21
- data/lib/vite_ruby/cli/build.rb +0 -2
- data/lib/vite_ruby/cli/install.rb +9 -2
- data/lib/vite_ruby/cli/vite.rb +3 -7
- data/lib/vite_ruby/cli.rb +0 -13
- data/lib/vite_ruby/commands.rb +7 -19
- data/lib/vite_ruby/compatibility_check.rb +1 -1
- data/lib/vite_ruby/config.rb +10 -30
- data/lib/vite_ruby/dev_server_proxy.rb +5 -10
- data/lib/vite_ruby/io.rb +1 -1
- data/lib/vite_ruby/manifest.rb +16 -28
- data/lib/vite_ruby/missing_entrypoint_error.rb +9 -18
- data/lib/vite_ruby/runner.rb +5 -11
- data/lib/vite_ruby/version.rb +3 -3
- data/lib/vite_ruby.rb +11 -26
- metadata +12 -19
- data/lib/vite_ruby/cli/ssr.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e369fc30038cbf7475208298ccc3eebbcec6ad98100b785d6303b766afc3aad
|
4
|
+
data.tar.gz: '0811dc3a900d49b9b0b3c406b32b96e852d5a367dce1c96924b6b0a936fddc39'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef190e8c53cf93255f56a69fa7db7fe684f1fc4924b21aca81d9d2160ec117accf643771a5692bf58225884958fa06fc3b1e713241eaa6f2f223b8fca35e216a
|
7
|
+
data.tar.gz: 22b63dc5256c147ddf084f0324f2e6a236b86b654e6cd63e99da2608c6869290aa80885b8d9c61f8c7056df449464cb24831717de5e1a0857b5cf28af303700c
|
data/CHANGELOG.md
CHANGED
@@ -1,325 +1,9 @@
|
|
1
|
-
# [
|
2
|
-
|
3
|
-
|
4
|
-
### Bug Fixes
|
5
|
-
|
6
|
-
* prevent clean from deleting assets referenced in the manifests ([8a581c1](https://github.com/ElMassimo/vite_ruby/commit/8a581c15ff480049bbb14dab1b5a3497308521b5))
|
7
|
-
|
8
|
-
|
9
|
-
### Features
|
10
|
-
|
11
|
-
* use vite 5 in new installations ([f063f28](https://github.com/ElMassimo/vite_ruby/commit/f063f283f939d15b3c48c1a9b6efcd589fafbaf1))
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
# [3.4.0](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.3.4...vite_ruby@3.4.0) (2023-11-16)
|
16
|
-
|
17
|
-
|
18
|
-
### Bug Fixes
|
19
|
-
|
20
|
-
* **breaking:** check for any existing manifest path before cleaning ([c450483](https://github.com/ElMassimo/vite_ruby/commit/c4504839e11006d50d6503288469cb3de0c6a9cd))
|
21
|
-
|
22
|
-
|
23
|
-
### Features
|
24
|
-
|
25
|
-
* add support for vite 5, which changed default manifest path ([818132a](https://github.com/ElMassimo/vite_ruby/commit/818132a07af3f17ba27ae09c44fcd59029064238))
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
## [3.3.4](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.3.3...vite_ruby@3.3.4) (2023-06-27)
|
30
|
-
|
31
|
-
|
32
|
-
### Bug Fixes
|
33
|
-
|
34
|
-
* check only once per second when dev server is not running ([#377](https://github.com/ElMassimo/vite_ruby/issues/377)) ([fb33f0a](https://github.com/ElMassimo/vite_ruby/commit/fb33f0a28077f9912deed257b7be3a7e050c2d94))
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
## [3.3.3](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.3.2...vite_ruby@3.3.3) (2023-06-19)
|
39
|
-
|
40
|
-
|
41
|
-
### Features
|
42
|
-
|
43
|
-
* allow skipping dev dependencies on install ([#374](https://github.com/ElMassimo/vite_ruby/issues/374)) ([a309f4f](https://github.com/ElMassimo/vite_ruby/commit/a309f4f9fc62fb7b9d0728b66b30ad90e68ba7bf))
|
44
|
-
* Use javascript_tag helper for vite_react_refresh_tag ([#372](https://github.com/ElMassimo/vite_ruby/issues/372)) ([238c6bd](https://github.com/ElMassimo/vite_ruby/commit/238c6bd211c0fafaa6170f0bdd631a0f6e41d992)), closes [#249](https://github.com/ElMassimo/vite_ruby/issues/249)
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
## [3.3.2](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.3.1...vite_ruby@3.3.2) (2023-05-09)
|
49
|
-
|
50
|
-
|
51
|
-
### Bug Fixes
|
52
|
-
|
53
|
-
* ensure assets:precompile task is displayed when using `rake -T` ([66af6eb](https://github.com/ElMassimo/vite_ruby/commit/66af6eb0268e7a989562feb38da74072817f0d49))
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
## [3.3.1](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.3.0...vite_ruby@3.3.1) (2023-04-28)
|
58
|
-
|
59
|
-
|
60
|
-
### Features
|
61
|
-
|
62
|
-
* upgrade default vite version to 4.3 ([b186456](https://github.com/ElMassimo/vite_ruby/commit/b18645605dd40b312da1137a6440abc8fe4c5ae7))
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
# [3.3.0](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.15...vite_ruby@3.3.0) (2023-03-16)
|
67
|
-
|
68
|
-
|
69
|
-
### Features
|
70
|
-
|
71
|
-
* add support for the --profile flag when running vite build ([4a949fd](https://github.com/ElMassimo/vite_ruby/commit/4a949fde1672b899c7c0382e99a669195c7ea639)), closes [#332](https://github.com/ElMassimo/vite_ruby/issues/332)
|
72
|
-
* change defaults to vite@4.2.0 and vite-plugin-ruby@3.2.0 ([e9f5702](https://github.com/ElMassimo/vite_ruby/commit/e9f570294c34682a6dd18fdc2ef13675f33375e6))
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
## [3.2.15](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.14...vite_ruby@3.2.15) (2023-03-01)
|
77
|
-
|
78
|
-
|
79
|
-
### Features
|
80
|
-
|
81
|
-
* install dependencies with yarn if npx is not available ([#343](https://github.com/ElMassimo/vite_ruby/issues/343)) ([90c5db2](https://github.com/ElMassimo/vite_ruby/commit/90c5db2e45ed89aedfa02f0f167925e4ccb02d6d)), closes [#342](https://github.com/ElMassimo/vite_ruby/issues/342)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
## [3.2.14](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.13...vite_ruby@3.2.14) (2022-12-22)
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
## [3.2.13](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.12...vite_ruby@3.2.13) (2022-12-09)
|
90
|
-
|
91
|
-
|
92
|
-
### Features
|
93
|
-
|
94
|
-
* install vite 4 by default ([c1a2e16](https://github.com/ElMassimo/vite_ruby/commit/c1a2e16a5b47225c53ad73b4f6371f2108881850))
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
## [3.2.12](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.11...vite_ruby@3.2.12) (2022-12-02)
|
99
|
-
|
100
|
-
|
101
|
-
### Features
|
102
|
-
|
103
|
-
* add experimental `skipProxy` setting ([#315](https://github.com/ElMassimo/vite_ruby/issues/315)) ([e9285f6](https://github.com/ElMassimo/vite_ruby/commit/e9285f62c76cc0cbbc5dc99d977e8aef30d08b6f))
|
104
|
-
* add ViteRuby.instance.configure API to be used in config/vite.rb ([b5b8681](https://github.com/ElMassimo/vite_ruby/commit/b5b8681f85f5388a56d72c9b05dbfc95d5ba607b))
|
105
|
-
|
106
|
-
|
107
|
-
### Performance Improvements
|
108
|
-
|
109
|
-
* avoid calculating digest on each lookup ([#314](https://github.com/ElMassimo/vite_ruby/issues/314)) ([62df93a](https://github.com/ElMassimo/vite_ruby/commit/62df93a15c09c652a8b7496e26cf85d5d69acce7))
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
## [3.2.11](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.10...vite_ruby@3.2.11) (2022-11-13)
|
114
|
-
|
115
|
-
|
116
|
-
### Bug Fixes
|
117
|
-
|
118
|
-
* avoid removing double extension for non-preprocessor assets ([#301](https://github.com/ElMassimo/vite_ruby/issues/301)) ([2024f62](https://github.com/ElMassimo/vite_ruby/commit/2024f62af917cabcb817c32a5fbbe709d477c19f))
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
## [3.2.10](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.9...vite_ruby@3.2.10) (2022-11-03)
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
## [3.2.9](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.8...vite_ruby@3.2.9) (2022-11-02)
|
127
|
-
|
128
|
-
|
129
|
-
### Features
|
130
|
-
|
131
|
-
* allow different ViteRuby instances to set different env vars ([25628a7](https://github.com/ElMassimo/vite_ruby/commit/25628a752cbd4828547c1f454cc4cb2217a591e0))
|
132
|
-
* output exit code when vite process fails ([#294](https://github.com/ElMassimo/vite_ruby/issues/294)) ([eb8f678](https://github.com/ElMassimo/vite_ruby/commit/eb8f678248a02b693fffe5a49309984fed92a051)), closes [#292](https://github.com/ElMassimo/vite_ruby/issues/292)
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
## [3.2.8](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.7...vite_ruby@3.2.8) (2022-10-28)
|
137
|
-
|
138
|
-
|
139
|
-
### Features
|
140
|
-
|
141
|
-
* default to vite@3.2.0 ([2ef83a5](https://github.com/ElMassimo/vite_ruby/commit/2ef83a52148f46534c4106015f3f54ec9ee807cb))
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
## [3.2.7](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.6...vite_ruby@3.2.7) (2022-10-19)
|
146
|
-
|
147
|
-
|
148
|
-
### Bug Fixes
|
149
|
-
|
150
|
-
* yarn berry pnp mode support ([#278](https://github.com/ElMassimo/vite_ruby/issues/278)) ([1890447](https://github.com/ElMassimo/vite_ruby/commit/189044746e536847cb33fb471cc7c42251a61072))
|
1
|
+
# [](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.0.8...vite_ruby@) (2022-01-18)
|
151
2
|
|
152
3
|
|
153
4
|
### Features
|
154
5
|
|
155
|
-
*
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
## [3.2.6](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.5...vite_ruby@3.2.6) (2022-10-07)
|
160
|
-
|
161
|
-
|
162
|
-
### Features
|
163
|
-
|
164
|
-
* always trigger a build if the manifest is missing ([#275](https://github.com/ElMassimo/vite_ruby/issues/275)) ([53ffdb9](https://github.com/ElMassimo/vite_ruby/commit/53ffdb9559409cb813198b4fd8a7a5ccb0c3cd21))
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
## [3.2.5](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.4...vite_ruby@3.2.5) (2022-10-07)
|
169
|
-
|
170
|
-
|
171
|
-
### Features
|
172
|
-
|
173
|
-
* display last build errors in MissingEntrypointError ([#274](https://github.com/ElMassimo/vite_ruby/issues/274)) ([107c980](https://github.com/ElMassimo/vite_ruby/commit/107c980449546ef73c527b88f1db11a7201e4438))
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
## [3.2.4](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.3...vite_ruby@3.2.4) (2022-10-04)
|
178
|
-
|
179
|
-
|
180
|
-
### Bug Fixes
|
181
|
-
|
182
|
-
* **BREAKING CHANGE:** lookup now returns nil if auto-build fails ([#268](https://github.com/ElMassimo/vite_ruby/issues/268)) ([cf2dec1](https://github.com/ElMassimo/vite_ruby/commit/cf2dec1bfec2279179c1671e5b42479549fd11c4)), closes [#267](https://github.com/ElMassimo/vite_ruby/issues/267)
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
## [3.2.3](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.2...vite_ruby@3.2.3) (2022-08-28)
|
187
|
-
|
188
|
-
|
189
|
-
### Bug Fixes
|
190
|
-
|
191
|
-
* prevent yarn 2+ error in `assets:precompile` ([#241](https://github.com/ElMassimo/vite_ruby/issues/241)) ([e7e857a](https://github.com/ElMassimo/vite_ruby/commit/e7e857ac763dd053a8bda4b27d26a2090269f6d8))
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
## [3.2.2](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.1...vite_ruby@3.2.2) (2022-08-12)
|
196
|
-
|
197
|
-
|
198
|
-
### Features
|
199
|
-
|
200
|
-
* allow framework-specific libraries to extend the CLI ([a0ed66f](https://github.com/ElMassimo/vite_ruby/commit/a0ed66fe64fb2549cecc358ccd60c82be44255aa))
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
## [3.2.1](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.2.0...vite_ruby@3.2.1) (2022-08-11)
|
205
|
-
|
206
|
-
|
207
|
-
### Bug Fixes
|
208
|
-
|
209
|
-
* require the version after defining namespace (close [#239](https://github.com/ElMassimo/vite_ruby/issues/239)) ([7b92062](https://github.com/ElMassimo/vite_ruby/commit/7b920627f0f551166b3ab321e50b6cee746168c2))
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
# [3.2.0](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.1.7...vite_ruby@3.2.0) (2022-07-13)
|
214
|
-
|
215
|
-
|
216
|
-
### Features
|
217
|
-
|
218
|
-
* use Vite 3 as the default ([#225](https://github.com/ElMassimo/vite_ruby/issues/225)) ([8fab191](https://github.com/ElMassimo/vite_ruby/commit/8fab1912dc8c7c600854b490c09a603644714266))
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
## [3.1.7](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.1.6...vite_ruby@3.1.7) (2022-07-13)
|
223
|
-
|
224
|
-
|
225
|
-
### Bug Fixes
|
226
|
-
|
227
|
-
* npm deprecation warning on assets:precompile ([#226](https://github.com/ElMassimo/vite_ruby/issues/226)) ([e4f4b75](https://github.com/ElMassimo/vite_ruby/commit/e4f4b7540ef34296f1a8a4d8f1d2838549ee8460)), closes [#220](https://github.com/ElMassimo/vite_ruby/issues/220)
|
228
|
-
# [](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.1.6...vite_ruby@) (2022-07-01)
|
229
|
-
|
230
|
-
|
231
|
-
## [3.1.6](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.1.5...vite_ruby@3.1.6) (2022-06-02)
|
232
|
-
|
233
|
-
### Bug Fixes
|
234
|
-
|
235
|
-
* Catch npm command not found, for folks who install deps with yarn ([7a0407b3211e682bc1da40d29225af58d3396cbd](https://github.com/ElMassimo/vite_ruby/commit/7a0407b3211e682bc1da40d29225af58d3396cbd))
|
236
|
-
|
237
|
-
|
238
|
-
## [3.1.5](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.1.4...vite_ruby@3.1.5) (2022-05-30)
|
239
|
-
|
240
|
-
|
241
|
-
### Bug Fixes
|
242
|
-
|
243
|
-
* install dependencies without confirmation in modern versions of npm ([967fbf5](https://github.com/ElMassimo/vite_ruby/commit/967fbf52aac5e52e1a059bffda79c7472874775f)), closes [#216](https://github.com/ElMassimo/vite_ruby/issues/216)
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
## [3.1.4](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.1.3...vite_ruby@3.1.4) (2022-05-13)
|
248
|
-
|
249
|
-
|
250
|
-
### Features
|
251
|
-
|
252
|
-
* expose `ViteRuby.digest` to simplify asset versioning. ([ff92ce6](https://github.com/ElMassimo/vite_ruby/commit/ff92ce6011d857efa83987d3c20d48767111e700))
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
## [3.1.3](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.1.2...vite_ruby@3.1.3) (2022-05-13)
|
257
|
-
|
258
|
-
|
259
|
-
### Bug Fixes
|
260
|
-
|
261
|
-
* change default for ssrOutputDir so it's ignored by default ([2f93b76](https://github.com/ElMassimo/vite_ruby/commit/2f93b762b29462cc619527ed47e6fa3cf8d3c8c9))
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
## [3.1.2](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.1.1...vite_ruby@3.1.2) (2022-05-12)
|
266
|
-
|
267
|
-
|
268
|
-
### Features
|
269
|
-
|
270
|
-
* add support for SSR builds (experimental) ([#212](https://github.com/ElMassimo/vite_ruby/issues/212)) ([4d6cd2b](https://github.com/ElMassimo/vite_ruby/commit/4d6cd2b84f670b1703e3bde7033e822be97bf505))
|
271
|
-
* ignore any vite dirs in .gitignore installation (for ssr builds) ([fd68420](https://github.com/ElMassimo/vite_ruby/commit/fd68420dfaeb79b97f8edade5bf17bfe81fd2486))
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
## [3.1.1](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.1.0...vite_ruby@3.1.1) (2022-04-14)
|
276
|
-
|
277
|
-
|
278
|
-
### Bug Fixes
|
279
|
-
|
280
|
-
* prevent error when using a proc in asset_host (close [#202](https://github.com/ElMassimo/vite_ruby/issues/202)) ([#203](https://github.com/ElMassimo/vite_ruby/issues/203)) ([cb23a81](https://github.com/ElMassimo/vite_ruby/commit/cb23a81037651ac01d993935f68cc526ec2c844d))
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
# [3.1.0](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.0.11...vite_ruby@3.1.0) (2022-04-01)
|
285
|
-
|
286
|
-
|
287
|
-
### Features
|
288
|
-
|
289
|
-
* improve capistrano-rails integration by extending asset tasks ([#200](https://github.com/ElMassimo/vite_ruby/issues/200)) ([d5704ab](https://github.com/ElMassimo/vite_ruby/commit/d5704ab55abf27cbdb5b00841bce3136147a0200))
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
## [3.0.11](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.0.10...vite_ruby@3.0.11) (2022-04-01)
|
294
|
-
|
295
|
-
|
296
|
-
### Features
|
297
|
-
|
298
|
-
* bump the default vite version ([2cb8952](https://github.com/ElMassimo/vite_ruby/commit/2cb895246b3154322273989057bf9bdc67634bc6))
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
## [3.0.10](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.0.9...vite_ruby@3.0.10) (2022-03-17)
|
303
|
-
|
304
|
-
|
305
|
-
### Bug Fixes
|
306
|
-
|
307
|
-
* avoid proxying requests starting with @ ([93d071b](https://github.com/ElMassimo/vite_ruby/commit/93d071b2b807c2e09e24d5d7ea4228974b370960))
|
308
|
-
* MissingExecutableError when deploying with Capistrano (close [#192](https://github.com/ElMassimo/vite_ruby/issues/192)) ([22e1691](https://github.com/ElMassimo/vite_ruby/commit/22e1691a0685b1fdeec3904657be5e69a57e6456))
|
309
|
-
|
310
|
-
|
311
|
-
### Features
|
312
|
-
|
313
|
-
* bump up default vite version to 2.8.6 ([fd53030](https://github.com/ElMassimo/vite_ruby/commit/fd5303017760dc176b3fb15908f08a16a175c22f))
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
## [3.0.9](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.0.8...vite_ruby@3.0.9) (2022-02-09)
|
318
|
-
|
319
|
-
|
320
|
-
### Bug Fixes
|
321
|
-
|
322
|
-
* support older versions of npm (v6) that ship with node 12 and 14 ([0accc36](https://github.com/ElMassimo/vite_ruby/commit/0accc36e9ef82fa0923af4f94253433433c0b074))
|
6
|
+
* **experimental:** add support for Subresource Integrity via vite-plugin-manifest-sri ([0b3142c](https://github.com/ElMassimo/vite_ruby/commit/0b3142cd9d569a5f56821f53cdade337779bb0c1))
|
323
7
|
|
324
8
|
|
325
9
|
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<h1 align="center">
|
2
2
|
<a href="https://vite-ruby.netlify.app/">
|
3
|
-
<img src="https://raw.githubusercontent.com/ElMassimo/vite_ruby/main/logo.svg" width="120px"/>
|
3
|
+
<img src="https://raw.githubusercontent.com/ElMassimo/vite_ruby/main/docs/public/logo.svg" width="120px"/>
|
4
4
|
</a>
|
5
5
|
|
6
6
|
<br>
|
data/default.vite.json
CHANGED
@@ -11,15 +11,11 @@
|
|
11
11
|
"entrypointsDir": "entrypoints",
|
12
12
|
"sourceCodeDir": "app/frontend",
|
13
13
|
"skipCompatibilityCheck": false,
|
14
|
-
"skipProxy": false,
|
15
14
|
"host": "localhost",
|
16
15
|
"https": null,
|
17
16
|
"port": 3036,
|
18
17
|
"hideBuildConsoleOutput": false,
|
19
18
|
"viteBinPath": "node_modules/.bin/vite",
|
20
19
|
"watchAdditionalPaths": [],
|
21
|
-
"base": ""
|
22
|
-
"ssrBuildEnabled": false,
|
23
|
-
"ssrEntrypoint": "~/ssr/ssr.{js,ts,jsx,tsx}",
|
24
|
-
"ssrOutputDir": "public/vite-ssr"
|
20
|
+
"base": ""
|
25
21
|
}
|
data/exe/vite
CHANGED
data/lib/tasks/vite.rake
CHANGED
@@ -9,44 +9,29 @@ namespace :vite do
|
|
9
9
|
ViteRuby.commands.install_binstubs
|
10
10
|
end
|
11
11
|
|
12
|
-
desc '
|
12
|
+
desc 'Compile JavaScript packs using vite for production with digests'
|
13
13
|
task build: :'vite:verify_install' do
|
14
14
|
ViteRuby.commands.build_from_task
|
15
15
|
end
|
16
16
|
|
17
|
-
desc '
|
18
|
-
task build_ssr: :'vite:verify_install' do
|
19
|
-
ViteRuby.commands.build_from_task('--ssr')
|
20
|
-
end
|
21
|
-
|
22
|
-
desc 'Bundle entrypoints using Vite Ruby (SSR only if enabled)'
|
23
|
-
task build_all: :'vite:verify_install' do
|
24
|
-
ViteRuby.commands.build_from_task
|
25
|
-
ViteRuby.commands.build_from_task('--ssr') if ViteRuby.config.ssr_build_enabled
|
26
|
-
end
|
27
|
-
|
28
|
-
desc 'Remove old bundles created by ViteRuby'
|
17
|
+
desc 'Remove old compiled vites'
|
29
18
|
task :clean, [:keep, :age] => :'vite:verify_install' do |_, args|
|
30
19
|
ViteRuby.commands.clean_from_task(args)
|
31
20
|
end
|
32
21
|
|
33
|
-
desc 'Remove the build output directory
|
22
|
+
desc 'Remove the vite build output directory'
|
34
23
|
task clobber: :'vite:verify_install' do
|
35
24
|
ViteRuby.commands.clobber
|
36
25
|
end
|
37
26
|
|
38
|
-
desc '
|
27
|
+
desc 'Verifies if ViteRuby is properly installed in this application'
|
39
28
|
task :verify_install do
|
40
29
|
ViteRuby.commands.verify_install
|
41
30
|
end
|
42
31
|
|
43
|
-
desc '
|
32
|
+
desc 'Ensures build dependencies like Vite are installed when compiling assets'
|
44
33
|
task :install_dependencies do
|
45
|
-
|
46
|
-
cmd = ViteRuby.commands.legacy_npm_version? ? 'npx ci --yes' : 'npx --yes ci'
|
47
|
-
result = system(install_env_args, cmd)
|
48
|
-
# Fallback to `yarn` if `npx` is not available.
|
49
|
-
system(install_env_args, 'yarn install --frozen-lockfile') if result.nil?
|
34
|
+
system({ 'NODE_ENV' => 'development' }, 'npx --yes ci')
|
50
35
|
end
|
51
36
|
|
52
37
|
desc "Provide information on ViteRuby's environment"
|
@@ -59,41 +44,15 @@ unless ENV['VITE_RUBY_SKIP_ASSETS_PRECOMPILE_EXTENSION'] == 'true'
|
|
59
44
|
if Rake::Task.task_defined?('assets:precompile')
|
60
45
|
Rake::Task['assets:precompile'].enhance do |task|
|
61
46
|
prefix = task.name.split(/#|assets:precompile/).first
|
62
|
-
Rake::Task["#{ prefix }vite:
|
63
|
-
Rake::Task["#{ prefix }vite:build_all"].invoke
|
64
|
-
end
|
65
|
-
else
|
66
|
-
desc 'Bundle Vite assets'
|
67
|
-
Rake::Task.define_task('assets:precompile' => ['vite:install_dependencies', 'vite:build_all'])
|
68
|
-
end
|
69
|
-
|
70
|
-
unless Rake::Task.task_defined?('assets:clean')
|
71
|
-
desc 'Remove old compiled assets'
|
72
|
-
Rake::Task.define_task('assets:clean', [:keep, :age])
|
73
|
-
end
|
74
|
-
Rake::Task['assets:clean'].enhance do |_, args|
|
75
|
-
Rake::Task['vite:clean'].invoke(*args.to_h.values)
|
76
|
-
end
|
77
|
-
|
78
|
-
if Rake::Task.task_defined?('assets:clobber')
|
79
|
-
Rake::Task['assets:clobber'].enhance do
|
80
|
-
Rake::Task['vite:clobber'].invoke
|
47
|
+
Rake::Task["#{ prefix }vite:build"].invoke
|
81
48
|
end
|
82
49
|
else
|
83
|
-
|
84
|
-
Rake::Task.define_task('assets:clobber' => 'vite:clobber')
|
50
|
+
Rake::Task.define_task('assets:precompile' => ['vite:install_dependencies', 'vite:build'])
|
85
51
|
end
|
86
52
|
end
|
87
53
|
|
88
54
|
# Any prerequisite task that installs packages should also install build dependencies.
|
89
55
|
if ARGV.include?('assets:precompile')
|
90
|
-
|
91
|
-
|
92
|
-
else
|
93
|
-
ENV['NPM_CONFIG_INCLUDE'] = 'dev'
|
94
|
-
end
|
95
|
-
|
96
|
-
if ViteRuby.commands.legacy_yarn_version?
|
97
|
-
ENV['YARN_PRODUCTION'] = 'false'
|
98
|
-
end
|
56
|
+
ENV['NPM_CONFIG_PRODUCTION'] = 'false'
|
57
|
+
ENV['YARN_PRODUCTION'] = 'false'
|
99
58
|
end
|
data/lib/vite_ruby/build.rb
CHANGED
@@ -1,35 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'json'
|
4
3
|
require 'time'
|
5
4
|
|
6
5
|
# Internal: Value object with information about the last build.
|
7
|
-
ViteRuby::Build = Struct.new(:success, :timestamp, :vite_ruby, :digest, :current_digest
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
# Internal: Reads metadata recorded on the last build, if it exists.
|
21
|
-
def parse_metadata(pathname)
|
22
|
-
return default_metadata unless pathname.exist?
|
23
|
-
|
24
|
-
JSON.parse(pathname.read.to_s).transform_keys(&:to_sym).slice(*members)
|
25
|
-
rescue JSON::JSONError, Errno::ENOENT, Errno::ENOTDIR
|
26
|
-
default_metadata
|
27
|
-
end
|
28
|
-
|
29
|
-
# Internal: To make it evident that there's no last build in error messages.
|
30
|
-
def default_metadata
|
31
|
-
{ timestamp: 'never', digest: 'none' }
|
32
|
-
end
|
6
|
+
ViteRuby::Build = Struct.new(:success, :timestamp, :vite_ruby, :digest, :current_digest) do
|
7
|
+
# Internal: Combines information from a previous build with the current digest.
|
8
|
+
def self.from_previous(attrs, current_digest)
|
9
|
+
new(
|
10
|
+
attrs['success'],
|
11
|
+
attrs['timestamp'] || 'never',
|
12
|
+
attrs['vite_ruby'] || 'unknown',
|
13
|
+
attrs['digest'] || 'none',
|
14
|
+
current_digest,
|
15
|
+
)
|
33
16
|
end
|
34
17
|
|
35
18
|
# Internal: A build is considered stale when watched files have changed since
|
@@ -53,30 +36,17 @@ ViteRuby::Build = Struct.new(:success, :timestamp, :vite_ruby, :digest, :current
|
|
53
36
|
end
|
54
37
|
|
55
38
|
# Internal: Returns a new build with the specified result.
|
56
|
-
def with_result(
|
39
|
+
def with_result(success)
|
57
40
|
self.class.new(
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
current_digest: current_digest,
|
63
|
-
last_build_path: last_build_path,
|
41
|
+
success,
|
42
|
+
Time.now.strftime('%F %T'),
|
43
|
+
ViteRuby::VERSION,
|
44
|
+
current_digest,
|
64
45
|
)
|
65
46
|
end
|
66
47
|
|
67
|
-
# Internal: Writes the result of the new build to a local file.
|
68
|
-
def write_to_cache
|
69
|
-
last_build_path.write to_json
|
70
|
-
end
|
71
|
-
|
72
48
|
# Internal: Returns a JSON string with the metadata of the build.
|
73
49
|
def to_json(*_args)
|
74
|
-
JSON.pretty_generate(
|
75
|
-
success: success,
|
76
|
-
errors: errors,
|
77
|
-
timestamp: timestamp,
|
78
|
-
vite_ruby: vite_ruby,
|
79
|
-
digest: digest,
|
80
|
-
)
|
50
|
+
JSON.pretty_generate(to_h)
|
81
51
|
end
|
82
52
|
end
|
data/lib/vite_ruby/builder.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'json'
|
3
4
|
require 'digest/sha1'
|
4
5
|
|
5
6
|
# Public: Keeps track of watched files and triggers builds as needed.
|
@@ -11,13 +12,9 @@ class ViteRuby::Builder
|
|
11
12
|
# Public: Checks if the watched files have changed since the last compilation,
|
12
13
|
# and triggers a Vite build if any files have changed.
|
13
14
|
def build(*args)
|
14
|
-
last_build = last_build_metadata
|
15
|
-
|
16
|
-
|
17
|
-
stdout, stderr, status = build_with_vite(*args)
|
18
|
-
log_build_result(stdout, stderr, status)
|
19
|
-
record_build_metadata(last_build, errors: stderr, success: status.success?)
|
20
|
-
status.success?
|
15
|
+
last_build = last_build_metadata
|
16
|
+
if args.delete('--force') || last_build.stale?
|
17
|
+
build_with_vite(*args).tap { |success| record_build_metadata(success, last_build) }
|
21
18
|
elsif last_build.success
|
22
19
|
logger.debug "Skipping vite build. Watched files have not changed since the last build at #{ last_build.timestamp }"
|
23
20
|
true
|
@@ -28,8 +25,8 @@ class ViteRuby::Builder
|
|
28
25
|
end
|
29
26
|
|
30
27
|
# Internal: Reads the result of the last compilation from disk.
|
31
|
-
def last_build_metadata
|
32
|
-
ViteRuby::Build.from_previous(
|
28
|
+
def last_build_metadata
|
29
|
+
ViteRuby::Build.from_previous(last_build_attrs, watched_files_digest)
|
33
30
|
end
|
34
31
|
|
35
32
|
private
|
@@ -38,35 +35,44 @@ private
|
|
38
35
|
|
39
36
|
def_delegators :@vite_ruby, :config, :logger, :run
|
40
37
|
|
38
|
+
# Internal: Reads metadata recorded on the last build, if it exists.
|
39
|
+
def last_build_attrs
|
40
|
+
last_build_path.exist? ? JSON.parse(last_build_path.read.to_s) : {}
|
41
|
+
rescue JSON::JSONError, Errno::ENOENT, Errno::ENOTDIR
|
42
|
+
{}
|
43
|
+
end
|
44
|
+
|
41
45
|
# Internal: Writes a digest of the watched files to disk for future checks.
|
42
|
-
def record_build_metadata(
|
46
|
+
def record_build_metadata(success, build)
|
43
47
|
config.build_cache_dir.mkpath
|
44
|
-
build.with_result(
|
48
|
+
last_build_path.write build.with_result(success).to_json
|
45
49
|
end
|
46
50
|
|
47
51
|
# Internal: The file path where metadata of the last build is stored.
|
48
|
-
def last_build_path
|
49
|
-
config.build_cache_dir.join("last
|
52
|
+
def last_build_path
|
53
|
+
config.build_cache_dir.join("last-build-#{ config.mode }.json")
|
50
54
|
end
|
51
55
|
|
52
56
|
# Internal: Returns a digest of all the watched files, allowing to detect
|
53
57
|
# changes, and skip Vite builds if no files have changed.
|
54
58
|
def watched_files_digest
|
55
|
-
|
56
|
-
|
57
|
-
config.within_root do
|
59
|
+
Dir.chdir File.expand_path(config.root) do
|
58
60
|
files = Dir[*config.watched_paths].reject { |f| File.directory?(f) }
|
59
61
|
file_ids = files.sort.map { |f| "#{ File.basename(f) }/#{ Digest::SHA1.file(f).hexdigest }" }
|
60
|
-
|
61
|
-
@last_digest = Digest::SHA1.hexdigest(file_ids.join('/'))
|
62
|
+
Digest::SHA1.hexdigest(file_ids.join('/'))
|
62
63
|
end
|
63
64
|
end
|
64
65
|
|
65
66
|
# Public: Initiates a Vite build command to generate assets.
|
67
|
+
#
|
68
|
+
# Returns true if the build is successful, or false if it failed.
|
66
69
|
def build_with_vite(*args)
|
67
70
|
logger.info 'Building with Vite ⚡️'
|
68
71
|
|
69
|
-
run(['build', *args])
|
72
|
+
stdout, stderr, status = run(['build', *args])
|
73
|
+
log_build_result(stdout, stderr.to_s, status)
|
74
|
+
|
75
|
+
status.success?
|
70
76
|
end
|
71
77
|
|
72
78
|
# Internal: Outputs the build results.
|
@@ -75,10 +81,9 @@ private
|
|
75
81
|
def log_build_result(_stdout, stderr, status)
|
76
82
|
if status.success?
|
77
83
|
logger.info "Build with Vite complete: #{ config.build_output_dir }"
|
78
|
-
logger.error stderr unless stderr.empty?
|
84
|
+
logger.error stderr.to_s unless stderr.empty?
|
79
85
|
else
|
80
86
|
logger.error stderr
|
81
|
-
logger.error status
|
82
87
|
logger.error 'Build with Vite failed! ❌'
|
83
88
|
logger.error '❌ Check that vite and vite-plugin-ruby are in devDependencies and have been installed. ' if stderr.include?('ERR! canceled')
|
84
89
|
end
|
data/lib/vite_ruby/cli/build.rb
CHANGED
@@ -5,10 +5,8 @@ class ViteRuby::CLI::Build < ViteRuby::CLI::Vite
|
|
5
5
|
|
6
6
|
desc 'Bundle all entrypoints using Vite.'
|
7
7
|
shared_options
|
8
|
-
option(:ssr, desc: 'Build the SSR entrypoint instead', type: :boolean)
|
9
8
|
option(:force, desc: 'Force the build even if assets have not changed', type: :boolean)
|
10
9
|
option(:watch, desc: 'Start the Rollup watcher and rebuild on files changes', type: :boolean)
|
11
|
-
option(:profile, desc: 'Gather performance metrics from the build ', type: :boolean)
|
12
10
|
|
13
11
|
def call(**options)
|
14
12
|
super { |args| ViteRuby.commands.build_from_task(*args) }
|