vitrify 0.5.8 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { promises as fs } from 'fs';
2
2
  import { routesToPaths } from '../../helpers/routes.js';
3
+ import Critters from 'critters';
3
4
  export const prerender = async ({ outDir, templatePath, manifestPath, entryServerPath, onRenderedHooks }) => {
4
5
  const promises = [];
5
6
  const template = (await fs.readFile(templatePath)).toString();
@@ -7,6 +8,13 @@ export const prerender = async ({ outDir, templatePath, manifestPath, entryServe
7
8
  const { render, getRoutes } = await import(entryServerPath);
8
9
  const routes = await getRoutes();
9
10
  const paths = routesToPaths(routes).filter((i) => !i.includes(':') && !i.includes('*'));
11
+ const critters = new Critters({
12
+ path: outDir,
13
+ logLevel: 'warn',
14
+ external: true,
15
+ inlineFonts: true,
16
+ preloadFonts: true
17
+ });
10
18
  for (const url of paths) {
11
19
  const filename = (url.endsWith('/') ? 'index' : url.replace(/^\//g, '')) + '.html';
12
20
  console.log(`Generating ${filename}`);
@@ -18,6 +26,7 @@ export const prerender = async ({ outDir, templatePath, manifestPath, entryServe
18
26
  let html = template
19
27
  .replace(`<!--preload-links-->`, preloadLinks)
20
28
  .replace(`<!--app-html-->`, appHtml);
29
+ html = await critters.process(html);
21
30
  if (onRenderedHooks?.length) {
22
31
  for (const ssrFunction of onRenderedHooks) {
23
32
  html = ssrFunction(html, ssrContext);
package/dist/index.js CHANGED
@@ -18,7 +18,8 @@ const internalServerModules = [
18
18
  '@fastify/static',
19
19
  '@fastify/middie',
20
20
  '@fastify',
21
- 'node'
21
+ 'node',
22
+ 'critters'
22
23
  ];
23
24
  const configPluginMap = {
24
25
  quasar: () => import('./plugins/quasar.js').then((module) => module.QuasarPlugin)
@@ -35,28 +35,19 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
35
35
  Components({
36
36
  resolvers: [QuasarResolver()]
37
37
  }),
38
- // {
39
- // name: 'vite-plugin-quasar-transform',
40
- // enforce: 'pre',
41
- // transform: (code, id, options) => {
42
- // const { ssr: transformSsr } = options || {}
43
- // code = code
44
- // .replaceAll('__QUASAR_SSR__', ssr ? ssr.toString() : 'false')
45
- // .replaceAll(
46
- // '__QUASAR_SSR_SERVER__',
47
- // transformSsr ? 'import.meta.env.SSR' : 'false'
48
- // )
49
- // .replaceAll(
50
- // '__QUASAR_SSR_CLIENT__',
51
- // ssr ? '!import.meta.env.SSR' : 'false'
52
- // )
53
- // .replaceAll(
54
- // '__QUASAR_SSR_PWA__',
55
- // ssr && pwa ? '!import.meta.env.SSR' : 'false'
56
- // )
57
- // return code
58
- // }
59
- // },
38
+ {
39
+ name: 'vite-plugin-quasar-transform',
40
+ enforce: 'pre',
41
+ transform: (code, id, options) => {
42
+ const { ssr: transformSsr } = options || {};
43
+ code = code
44
+ .replaceAll('__QUASAR_SSR__', ssr ? 'true' : 'false')
45
+ .replaceAll('__QUASAR_SSR_SERVER__', 'import.meta.env.SSR')
46
+ .replaceAll('__QUASAR_SSR_CLIENT__', '!import.meta.env.SSR')
47
+ .replaceAll('__QUASAR_SSR_PWA__', pwa ? '!import.meta.env.SSR' : 'false');
48
+ return code;
49
+ }
50
+ },
60
51
  {
61
52
  name: 'vite-plugin-quasar-setup',
62
53
  enforce: 'pre',
@@ -139,8 +130,15 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
139
130
  plugins = quasarConf?.framework.plugins;
140
131
  }
141
132
  return {
133
+ // build: {
134
+ // rollupOptions: {
135
+ // treeshake: {
136
+ // moduleSideEffects: 'no-external'
137
+ // }
138
+ // }
139
+ // },
142
140
  resolve: {
143
- dedupe: ['quasar', '@quasar/extras'],
141
+ // dedupe: ['quasar', '@quasar/extras'],
144
142
  alias: [
145
143
  // {
146
144
  // find: 'quasar/wrappers',
@@ -179,15 +177,18 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
179
177
  // urls?.packages?.quasar
180
178
  // ).pathname
181
179
  // },
182
- // {
183
- // find: 'quasar/src',
184
- // replacement: new URL('src/', urls?.packages?.quasar).pathname
185
- // }
186
180
  {
187
- find: new RegExp('^quasar$'),
188
- replacement: 'quasar/src/index.all.js'
181
+ find: 'quasar/src',
182
+ replacement: new URL('node_modules/quasar/src/', config.vitrify?.urls?.app).pathname
189
183
  }
190
184
  // {
185
+ // find: 'quasar',
186
+ // replacement: new URL(
187
+ // 'node_modules/quasar',
188
+ // config.vitrify?.urls?.app
189
+ // )
190
+ // }
191
+ // {
191
192
  // find: new RegExp('^quasar$'),
192
193
  // replacement: new URL('src/index.all.js', urls?.packages?.quasar)
193
194
  // .pathname
@@ -205,14 +206,14 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
205
206
  },
206
207
  define: {
207
208
  __DEV__: process.env.NODE_ENV !== 'production' || true,
208
- __QUASAR_VERSION__: `'${version}'`,
209
- __QUASAR_SSR__: !!ssr,
210
- // __QUASAR_SSR_SERVER__: ssr === 'server',
211
- __QUASAR_SSR_SERVER__: `import.meta.env.SSR`,
212
- // __QUASAR_SSR_CLIENT__: ssr === 'client',
213
- __QUASAR_SSR_CLIENT__: `!import.meta.env.SSR`,
214
- // __QUASAR_SSR_PWA__: ssr === 'client' && pwa
215
- __QUASAR_SSR_PWA__: pwa ? `!import.meta.env.SSR` : false
209
+ __QUASAR_VERSION__: `'${version}'`
210
+ // __QUASAR_SSR__: !!ssr,
211
+ // // __QUASAR_SSR_SERVER__: ssr === 'server',
212
+ // __QUASAR_SSR_SERVER__: `import.meta.env.SSR`,
213
+ // // __QUASAR_SSR_CLIENT__: ssr === 'client',
214
+ // __QUASAR_SSR_CLIENT__: `!import.meta.env.SSR`,
215
+ // // __QUASAR_SSR_PWA__: ssr === 'client' && pwa
216
+ // __QUASAR_SSR_PWA__: pwa ? `!import.meta.env.SSR` : false
216
217
  },
217
218
  ssr: {
218
219
  noExternal: ['quasar']
@@ -226,7 +227,11 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
226
227
  config: async (config, env) => ({
227
228
  resolve: {
228
229
  alias: [
229
- // { find: new RegExp('^quasar$'), replacement: 'virtual:quasar' }
230
+ {
231
+ find: new RegExp('^quasar$'),
232
+ replacement: 'virtual:quasar'
233
+ }
234
+ // { find: new RegExp('^quasar$'), replacement: 'virtual:quasar' }
230
235
  ]
231
236
  }
232
237
  }),
@@ -236,8 +241,8 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
236
241
  return 'virtual:quasar-plugins';
237
242
  case 'virtual:quasar-directives':
238
243
  return 'virtual:quasar-directives';
239
- case 'quasar':
240
- return { id: 'quasar', moduleSideEffects: false };
244
+ case 'virtual:quasar':
245
+ return { id: 'virtual:quasar', moduleSideEffects: false };
241
246
  default:
242
247
  return;
243
248
  }
@@ -247,15 +252,15 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
247
252
  return `export { ${plugins.join(',')} } from 'quasar'`;
248
253
  }
249
254
  else if (id === 'virtual:quasar-directives') {
250
- return `export * from 'quasar/src/directives'`;
255
+ return `export * from 'quasar/src/directives.js'`;
251
256
  }
252
- else if (id === 'quasar') {
253
- return `export * from 'quasar/src/plugins';
254
- export * from 'quasar/src/components';
255
- export * from 'quasar/src/composables';
256
- export * from 'quasar/src/directives';
257
- export * from 'quasar/src/utils';
258
- export { default as Quasar } from 'quasar/src/install-quasar'`;
257
+ else if (id === 'virtual:quasar') {
258
+ return `export * from 'quasar/src/plugins.js';
259
+ export * from 'quasar/src/components.js';
260
+ export * from 'quasar/src/composables.js';
261
+ export * from 'quasar/src/directives.js';
262
+ export * from 'quasar/src/utils.js';
263
+ export { default as Quasar } from 'quasar/src/install-quasar.js'`;
259
264
  }
260
265
  return null;
261
266
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vitrify",
3
- "version": "0.5.8",
3
+ "version": "0.6.0",
4
4
  "license": "MIT",
5
5
  "author": "Stefan van Herwijnen",
6
6
  "description": "Pre-configured Vite CLI for your framework",
@@ -1,6 +1,7 @@
1
1
  import { promises as fs } from 'fs'
2
2
  import { routesToPaths } from '../../helpers/routes.js'
3
3
  import type { OnRenderedHook } from '../../vitrify-config.js'
4
+ import Critters from 'critters'
4
5
 
5
6
  export const prerender = async ({
6
7
  outDir,
@@ -23,6 +24,13 @@ export const prerender = async ({
23
24
  const paths = routesToPaths(routes).filter(
24
25
  (i) => !i.includes(':') && !i.includes('*')
25
26
  )
27
+ const critters = new Critters({
28
+ path: outDir,
29
+ logLevel: 'warn',
30
+ external: true,
31
+ inlineFonts: true,
32
+ preloadFonts: true
33
+ })
26
34
  for (const url of paths) {
27
35
  const filename =
28
36
  (url.endsWith('/') ? 'index' : url.replace(/^\//g, '')) + '.html'
@@ -37,6 +45,8 @@ export const prerender = async ({
37
45
  .replace(`<!--preload-links-->`, preloadLinks)
38
46
  .replace(`<!--app-html-->`, appHtml)
39
47
 
48
+ html = await critters.process(html)
49
+
40
50
  if (onRenderedHooks?.length) {
41
51
  for (const ssrFunction of onRenderedHooks) {
42
52
  html = ssrFunction(html, ssrContext)
package/src/node/index.ts CHANGED
@@ -33,7 +33,8 @@ const internalServerModules = [
33
33
  '@fastify/static',
34
34
  '@fastify/middie',
35
35
  '@fastify',
36
- 'node'
36
+ 'node',
37
+ 'critters'
37
38
  ]
38
39
 
39
40
  const configPluginMap: Record<string, () => Promise<VitrifyPlugin>> = {
@@ -86,29 +86,23 @@ export const QuasarPlugin: VitrifyPlugin = async ({
86
86
  Components({
87
87
  resolvers: [QuasarResolver()]
88
88
  }),
89
- // {
90
- // name: 'vite-plugin-quasar-transform',
91
- // enforce: 'pre',
92
- // transform: (code, id, options) => {
93
- // const { ssr: transformSsr } = options || {}
94
- // code = code
95
- // .replaceAll('__QUASAR_SSR__', ssr ? ssr.toString() : 'false')
96
- // .replaceAll(
97
- // '__QUASAR_SSR_SERVER__',
98
- // transformSsr ? 'import.meta.env.SSR' : 'false'
99
- // )
100
- // .replaceAll(
101
- // '__QUASAR_SSR_CLIENT__',
102
- // ssr ? '!import.meta.env.SSR' : 'false'
103
- // )
104
- // .replaceAll(
105
- // '__QUASAR_SSR_PWA__',
106
- // ssr && pwa ? '!import.meta.env.SSR' : 'false'
107
- // )
89
+ {
90
+ name: 'vite-plugin-quasar-transform',
91
+ enforce: 'pre',
92
+ transform: (code, id, options) => {
93
+ const { ssr: transformSsr } = options || {}
94
+ code = code
95
+ .replaceAll('__QUASAR_SSR__', ssr ? 'true' : 'false')
96
+ .replaceAll('__QUASAR_SSR_SERVER__', 'import.meta.env.SSR')
97
+ .replaceAll('__QUASAR_SSR_CLIENT__', '!import.meta.env.SSR')
98
+ .replaceAll(
99
+ '__QUASAR_SSR_PWA__',
100
+ pwa ? '!import.meta.env.SSR' : 'false'
101
+ )
108
102
 
109
- // return code
110
- // }
111
- // },
103
+ return code
104
+ }
105
+ },
112
106
  {
113
107
  name: 'vite-plugin-quasar-setup',
114
108
  enforce: 'pre',
@@ -209,8 +203,15 @@ export const QuasarPlugin: VitrifyPlugin = async ({
209
203
  }
210
204
 
211
205
  return {
206
+ // build: {
207
+ // rollupOptions: {
208
+ // treeshake: {
209
+ // moduleSideEffects: 'no-external'
210
+ // }
211
+ // }
212
+ // },
212
213
  resolve: {
213
- dedupe: ['quasar', '@quasar/extras'],
214
+ // dedupe: ['quasar', '@quasar/extras'],
214
215
  alias: [
215
216
  // {
216
217
  // find: 'quasar/wrappers',
@@ -249,15 +250,21 @@ export const QuasarPlugin: VitrifyPlugin = async ({
249
250
  // urls?.packages?.quasar
250
251
  // ).pathname
251
252
  // },
252
- // {
253
- // find: 'quasar/src',
254
- // replacement: new URL('src/', urls?.packages?.quasar).pathname
255
- // }
256
253
  {
257
- find: new RegExp('^quasar$'),
258
- replacement: 'quasar/src/index.all.js'
254
+ find: 'quasar/src',
255
+ replacement: new URL(
256
+ 'node_modules/quasar/src/',
257
+ config.vitrify?.urls?.app
258
+ ).pathname
259
259
  }
260
260
  // {
261
+ // find: 'quasar',
262
+ // replacement: new URL(
263
+ // 'node_modules/quasar',
264
+ // config.vitrify?.urls?.app
265
+ // )
266
+ // }
267
+ // {
261
268
  // find: new RegExp('^quasar$'),
262
269
  // replacement: new URL('src/index.all.js', urls?.packages?.quasar)
263
270
  // .pathname
@@ -275,14 +282,14 @@ export const QuasarPlugin: VitrifyPlugin = async ({
275
282
  },
276
283
  define: {
277
284
  __DEV__: process.env.NODE_ENV !== 'production' || true,
278
- __QUASAR_VERSION__: `'${version}'`,
279
- __QUASAR_SSR__: !!ssr,
280
- // __QUASAR_SSR_SERVER__: ssr === 'server',
281
- __QUASAR_SSR_SERVER__: `import.meta.env.SSR`,
282
- // __QUASAR_SSR_CLIENT__: ssr === 'client',
283
- __QUASAR_SSR_CLIENT__: `!import.meta.env.SSR`,
284
- // __QUASAR_SSR_PWA__: ssr === 'client' && pwa
285
- __QUASAR_SSR_PWA__: pwa ? `!import.meta.env.SSR` : false
285
+ __QUASAR_VERSION__: `'${version}'`
286
+ // __QUASAR_SSR__: !!ssr,
287
+ // // __QUASAR_SSR_SERVER__: ssr === 'server',
288
+ // __QUASAR_SSR_SERVER__: `import.meta.env.SSR`,
289
+ // // __QUASAR_SSR_CLIENT__: ssr === 'client',
290
+ // __QUASAR_SSR_CLIENT__: `!import.meta.env.SSR`,
291
+ // // __QUASAR_SSR_PWA__: ssr === 'client' && pwa
292
+ // __QUASAR_SSR_PWA__: pwa ? `!import.meta.env.SSR` : false
286
293
  },
287
294
  ssr: {
288
295
  noExternal: ['quasar']
@@ -296,6 +303,10 @@ export const QuasarPlugin: VitrifyPlugin = async ({
296
303
  config: async (config, env) => ({
297
304
  resolve: {
298
305
  alias: [
306
+ {
307
+ find: new RegExp('^quasar$'),
308
+ replacement: 'virtual:quasar'
309
+ }
299
310
  // { find: new RegExp('^quasar$'), replacement: 'virtual:quasar' }
300
311
  ]
301
312
  }
@@ -306,8 +317,8 @@ export const QuasarPlugin: VitrifyPlugin = async ({
306
317
  return 'virtual:quasar-plugins'
307
318
  case 'virtual:quasar-directives':
308
319
  return 'virtual:quasar-directives'
309
- case 'quasar':
310
- return { id: 'quasar', moduleSideEffects: false }
320
+ case 'virtual:quasar':
321
+ return { id: 'virtual:quasar', moduleSideEffects: false }
311
322
  default:
312
323
  return
313
324
  }
@@ -316,14 +327,14 @@ export const QuasarPlugin: VitrifyPlugin = async ({
316
327
  if (id === 'virtual:quasar-plugins') {
317
328
  return `export { ${plugins.join(',')} } from 'quasar'`
318
329
  } else if (id === 'virtual:quasar-directives') {
319
- return `export * from 'quasar/src/directives'`
320
- } else if (id === 'quasar') {
321
- return `export * from 'quasar/src/plugins';
322
- export * from 'quasar/src/components';
323
- export * from 'quasar/src/composables';
324
- export * from 'quasar/src/directives';
325
- export * from 'quasar/src/utils';
326
- export { default as Quasar } from 'quasar/src/install-quasar'`
330
+ return `export * from 'quasar/src/directives.js'`
331
+ } else if (id === 'virtual:quasar') {
332
+ return `export * from 'quasar/src/plugins.js';
333
+ export * from 'quasar/src/components.js';
334
+ export * from 'quasar/src/composables.js';
335
+ export * from 'quasar/src/directives.js';
336
+ export * from 'quasar/src/utils.js';
337
+ export { default as Quasar } from 'quasar/src/install-quasar.js'`
327
338
  }
328
339
  return null
329
340
  }