Skip to content

Commit 7af2eff

Browse files
committed
refactor(build): build router in one step with vite
this also fixes some code duplication issues
1 parent c4d3bd7 commit 7af2eff

File tree

6 files changed

+92
-363
lines changed

6 files changed

+92
-363
lines changed

packages/qwik-router/global.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
/* eslint-disable no-var */
22
// Globals used by qwik-router, for internal use only
33

4+
declare module '*?compiled-string' {
5+
const str: string;
6+
export default str;
7+
}
8+
49
type RequestEventInternal =
510
import('./middleware/request-handler/request-event').RequestEventInternal;
611
type AsyncStore = import('node:async_hooks').AsyncLocalStorage<RequestEventInternal>;

packages/qwik-router/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@
199199
"directory": "packages/qwik-router"
200200
},
201201
"scripts": {
202-
"build": "cd src/runtime && vite build --mode lib"
202+
"build": "vite build"
203203
},
204204
"sideEffects": false,
205205
"type": "module",

packages/qwik-router/src/buildtime/vite/plugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import swRegister from '@qwik-router-sw-register-build';
1+
import swRegister from '../runtime-generation/sw-register-build?compiled-string';
22
import type { QwikVitePlugin } from '@qwik.dev/core/optimizer';
33
import fs from 'node:fs';
44
import { basename, extname, join, resolve } from 'node:path';

packages/qwik-router/src/runtime/vite.config.mts

Lines changed: 0 additions & 30 deletions
This file was deleted.
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import { defineConfig } from 'vite';
2+
import { compiledStringPlugin } from '../../scripts/compiled-string-plugin';
3+
import pkg from './package.json' with { type: 'json' };
4+
5+
export default defineConfig(() => {
6+
return {
7+
build: {
8+
emptyOutDir: false,
9+
ssr: true,
10+
modulePreload: false,
11+
target: 'es2020',
12+
outDir: 'lib',
13+
minify: false,
14+
rollupOptions: {
15+
input: {
16+
index: './src/runtime/src/',
17+
'adapters/azure-swa/vite': './src/adapters/azure-swa/vite',
18+
'adapters/cloudflare-pages/vite': './src/adapters/cloudflare-pages/vite',
19+
'adapters/cloud-run/vite': './src/adapters/cloud-run/vite',
20+
'adapters/bun-server/vite': './src/adapters/bun-server/vite',
21+
'adapters/deno-server/vite': './src/adapters/deno-server/vite',
22+
'adapters/node-server/vite': './src/adapters/node-server/vite',
23+
'adapters/netlify-edge/vite': './src/adapters/netlify-edge/vite',
24+
'adapters/shared/vite': './src/adapters/shared/vite',
25+
'adapters/ssg/vite': './src/adapters/ssg/vite',
26+
'adapters/vercel-edge/vite': './src/adapters/vercel-edge/vite',
27+
'middleware/azure-swa': './src/middleware/azure-swa',
28+
'middleware/aws-lambda': './src/middleware/aws-lambda',
29+
'middleware/cloudflare-pages': './src/middleware/cloudflare-pages',
30+
'middleware/firebase': './src/middleware/firebase',
31+
'middleware/deno': './src/middleware/deno',
32+
'middleware/bun': './src/middleware/bun',
33+
'middleware/netlify-edge': './src/middleware/netlify-edge',
34+
'middleware/node': './src/middleware/node',
35+
'middleware/request-handler': './src/middleware/request-handler',
36+
'middleware/vercel-edge': './src/middleware/vercel-edge',
37+
ssg: './src/ssg',
38+
vite: './src/buildtime/vite',
39+
'service-worker': './src/runtime/src/service-worker',
40+
},
41+
output: [
42+
{
43+
format: 'es',
44+
chunkFileNames: (chunkInfo) =>
45+
chunkInfo.moduleIds.some((id) => id.includes('runtime'))
46+
? 'chunks/[name].qwik.mjs'
47+
: 'chunks/[name].mjs',
48+
entryFileNames: (chunkInfo) =>
49+
chunkInfo.name === 'index' ? '[name].qwik.mjs' : '[name]/index.mjs',
50+
},
51+
{
52+
format: 'cjs',
53+
chunkFileNames: (chunkInfo) =>
54+
chunkInfo.moduleIds.some((id) => id.includes('runtime'))
55+
? 'chunks/[name].qwik.cjs'
56+
: 'chunks/[name].cjs',
57+
entryFileNames: (chunkInfo) =>
58+
chunkInfo.name === 'index' ? '[name].qwik.cjs' : '[name]/index.cjs',
59+
},
60+
],
61+
external: [
62+
/node:.*/,
63+
'fsevents',
64+
'zod',
65+
'@qwik-router-sw-register',
66+
'@qwik-router-config',
67+
/@qwik\.dev\/core/,
68+
/@qwik\.dev\/router\//,
69+
...Object.keys(pkg.dependencies || {}),
70+
...Object.keys(pkg.peerDependencies || {}),
71+
],
72+
},
73+
},
74+
plugins: [compiledStringPlugin()],
75+
clearScreen: false,
76+
optimizeDeps: {
77+
force: true,
78+
},
79+
};
80+
});

0 commit comments

Comments
 (0)