vite_ruby 3.5.0 → 4.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6024067932bb5062002e46418a1861eb4193916c7454e24245fe3cf83c56795d
4
- data.tar.gz: cfc52727b1e4cde4936254cd0025d97942e3b636c5647742dc1c809fb3a9bba4
3
+ metadata.gz: 3e369fc30038cbf7475208298ccc3eebbcec6ad98100b785d6303b766afc3aad
4
+ data.tar.gz: '0811dc3a900d49b9b0b3c406b32b96e852d5a367dce1c96924b6b0a936fddc39'
5
5
  SHA512:
6
- metadata.gz: 489c44241c90ac71fd978a8142554581505e05acce6268a062738a4f1f9c5e88a2cca39778459cea3e7e79d5116bc7f8ea1b4455f65fe9d436a15164ab5704cc
7
- data.tar.gz: 2425fb29d5151d56f2774c435eb2a5b636c765e229aff3a99936300453ec77c281fdac8c85c6885d1cc3ce900a470f3b58cb6135f0a51124ef34c965282d9b38
6
+ metadata.gz: ef190e8c53cf93255f56a69fa7db7fe684f1fc4924b21aca81d9d2160ec117accf643771a5692bf58225884958fa06fc3b1e713241eaa6f2f223b8fca35e216a
7
+ data.tar.gz: 22b63dc5256c147ddf084f0324f2e6a236b86b654e6cd63e99da2608c6869290aa80885b8d9c61f8c7056df449464cb24831717de5e1a0857b5cf28af303700c
data/CHANGELOG.md CHANGED
@@ -1,325 +1,9 @@
1
- # [3.5.0](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.4.0...vite_ruby@3.5.0) (2023-11-16)
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
- * create vite-plugin-rails, an opinionated version of `vite-plugin-ruby` ([#282](https://github.com/ElMassimo/vite_ruby/issues/282)) ([16375fb](https://github.com/ElMassimo/vite_ruby/commit/16375fb1f6f2bf86dff935ca3aaf91c333a796ff))
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
@@ -7,6 +7,4 @@ require 'bundler/setup'
7
7
  require 'vite_ruby'
8
8
 
9
9
  cli = ViteRuby::CLI
10
- cli.require_framework_libraries
11
-
12
10
  Dry::CLI.new(cli).call
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 'Bundle frontend entrypoints using ViteRuby'
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 'Bundle a Node.js app from the SSR entrypoint using ViteRuby'
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 for ViteRuby'
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 'Verify if ViteRuby is properly installed in the app'
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 'Ensure build dependencies like Vite are installed before bundling'
32
+ desc 'Ensures build dependencies like Vite are installed when compiling assets'
44
33
  task :install_dependencies do
45
- install_env_args = ENV['VITE_RUBY_SKIP_INSTALL_DEV_DEPENDENCIES'] == 'true' ? {} : { 'NODE_ENV' => 'development' }
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:install_dependencies"].invoke
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
- desc 'Remove compiled assets'
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
- if ViteRuby.commands.legacy_npm_version?
91
- ENV['NPM_CONFIG_PRODUCTION'] = 'false'
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
@@ -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, :last_build_path, :errors, keyword_init: true) do
8
- class << self
9
- # Internal: Combines information from a previous build with the current digest.
10
- def from_previous(last_build_path, current_digest)
11
- new(
12
- **parse_metadata(last_build_path),
13
- current_digest: current_digest,
14
- last_build_path: last_build_path,
15
- )
16
- end
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(**attrs)
39
+ def with_result(success)
57
40
  self.class.new(
58
- **attrs,
59
- timestamp: Time.now.strftime('%F %T'),
60
- vite_ruby: ViteRuby::VERSION,
61
- digest: current_digest,
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
@@ -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(ssr: args.include?('--ssr'))
15
-
16
- if args.delete('--force') || last_build.stale? || config.manifest_paths.empty?
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(ssr: false)
32
- ViteRuby::Build.from_previous(last_build_path(ssr: ssr), watched_files_digest)
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(build, **attrs)
46
+ def record_build_metadata(success, build)
43
47
  config.build_cache_dir.mkpath
44
- build.with_result(**attrs).write_to_cache
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(ssr:)
49
- config.build_cache_dir.join("last#{ '-ssr' if ssr }-build-#{ config.mode }.json")
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
- return @last_digest if @last_digest_at && Time.now - @last_digest_at < 1
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
- @last_digest_at = Time.now
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
@@ -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) }