create-qwik 0.0.4 → 0.0.8

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 (28) hide show
  1. package/README.md +3 -3
  2. package/index.js +64 -64
  3. package/package.json +1 -1
  4. package/starters/apps/starter/package.json +4 -4
  5. package/starters/apps/starter/rollup.config.js +14 -7
  6. package/starters/apps/starter/src/{index.server.qwik.tsx → index.server.tsx} +3 -3
  7. package/starters/apps/starter/src/{my-app.qwik.tsx → my-app.tsx} +0 -0
  8. package/starters/apps/starter-builder/package.json +4 -4
  9. package/starters/apps/starter-builder/rollup.config.js +14 -7
  10. package/starters/apps/starter-builder/src/{index.server.qwik.tsx → index.server.tsx} +3 -3
  11. package/starters/apps/starter-builder/src/{my-app.qwik.tsx → my-app.tsx} +0 -0
  12. package/starters/apps/starter-partytown/package.json +4 -4
  13. package/starters/apps/starter-partytown/rollup.config.js +14 -7
  14. package/starters/apps/starter-partytown/src/{index.server.qwik.tsx → index.server.tsx} +3 -3
  15. package/starters/apps/starter-partytown/src/{my-app.qwik.tsx → my-app.tsx} +0 -0
  16. package/starters/apps/todo/package.json +6 -4
  17. package/starters/apps/todo/rollup.config.js +16 -7
  18. package/starters/apps/todo/src/{components.qwik.tsx → components.tsx} +1 -1
  19. package/starters/apps/todo/src/{index.server.qwik.tsx → index.server.tsx} +6 -6
  20. package/starters/apps/todo/src/{state.qwik.ts → state.ts} +0 -0
  21. package/starters/apps/todo/tsconfig.json +1 -0
  22. package/starters/servers/cloudflare/package.json +19 -0
  23. package/starters/servers/cloudflare/rollup.config.server.js +29 -0
  24. package/starters/servers/cloudflare/src/index.cloudflare.tsx +82 -0
  25. package/starters/servers/cloudflare/workers-site/package.json +4 -0
  26. package/starters/servers/cloudflare/wrangler.toml +18 -0
  27. package/starters/servers/express/package.json +1 -1
  28. package/starters/servers/express/server/index.js +8 -15
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-qwik",
3
- "version": "0.0.4",
3
+ "version": "0.0.8",
4
4
  "description": "Interactive CLI for generating Qwik projects.",
5
5
  "bin": {
6
6
  "create-qwik": "index.js"
@@ -1,16 +1,16 @@
1
1
  {
2
- "name": "qwik-starter",
2
+ "name": "qwik-project-name",
3
3
  "version": "0.0.1",
4
4
  "description": "Blank starter app",
5
5
  "scripts": {
6
6
  "build": "npm run clean && rollup -c",
7
7
  "clean": "rimraf */build/",
8
- "start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\""
8
+ "start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\"",
9
+ "serve": "node server/index.js"
9
10
  },
10
11
  "devDependencies": {
11
- "@builder.io/qwik": "~0.0.14",
12
+ "@builder.io/qwik": "0.0.16-1",
12
13
  "@rollup/plugin-node-resolve": "^13.0.6",
13
- "@rollup/plugin-typescript": "^8.3.0",
14
14
  "concurrently": "^6.4.0",
15
15
  "rimraf": "^3.0.2",
16
16
  "rollup": "^2.59.0",
@@ -1,25 +1,27 @@
1
1
  import { nodeResolve } from '@rollup/plugin-node-resolve';
2
2
  import { qwikRollup } from '@builder.io/qwik/optimizer';
3
- import typescript from '@rollup/plugin-typescript';
3
+ import { writeFile, mkdir } from "fs/promises";
4
+ import { dirname } from "path";
4
5
 
5
6
  export default async function () {
6
7
  return {
7
8
  input: [
8
- 'src/index.server.qwik.tsx',
9
- 'src/my-app.qwik.tsx'
9
+ 'src/index.server.tsx',
10
+ 'src/my-app.tsx'
10
11
  ],
11
12
  plugins: [
12
13
  nodeResolve(),
13
14
  qwikRollup({
14
- symbolsPath: 'q-symbols.json',
15
- }),
16
- typescript(),
15
+ symbolsOutput: (data) => {
16
+ outputJSON('./server/build/q-symbols.json', data);
17
+ },
18
+ })
17
19
  ],
18
20
  output: [
19
21
  {
20
22
  chunkFileNames: 'q-[hash].js',
21
23
  dir: 'public/build',
22
- format: 'es',
24
+ format: 'es',
23
25
  },
24
26
  {
25
27
  dir: 'server/build',
@@ -28,3 +30,8 @@ export default async function () {
28
30
  ],
29
31
  };
30
32
  }
33
+
34
+ async function outputJSON(path, data) {
35
+ await mkdir(dirname(path), {recursive: true});
36
+ await writeFile(path, JSON.stringify(data, null, 2));
37
+ }
@@ -8,20 +8,20 @@
8
8
 
9
9
  import { h } from '@builder.io/qwik';
10
10
  import { renderToString, RenderToStringOptions, QwikLoader } from '@builder.io/qwik/server';
11
- import { MyApp } from './my-app.qwik';
11
+ import { MyApp } from './my-app';
12
12
 
13
13
  /**
14
14
  * Entry point for server-side pre-rendering.
15
15
  *
16
16
  * @returns a promise when all of the rendering is completed.
17
17
  */
18
- export default function serverRender(opts: RenderToStringOptions) {
18
+ export function renderApp(opts: RenderToStringOptions) {
19
19
  return renderToString(
20
20
  <html>
21
21
  <head>
22
22
  <title>Qwik Blank App</title>
23
23
  </head>
24
- <body>
24
+ <body q:base="/build/">
25
25
  <MyApp />
26
26
  <QwikLoader debug={opts.debug} />
27
27
  </body>
@@ -1,16 +1,16 @@
1
1
  {
2
- "name": "qwik-starter-builder",
2
+ "name": "qwik-project-name",
3
3
  "version": "0.0.1",
4
4
  "description": "Blank builder starter app",
5
5
  "scripts": {
6
6
  "build": "npm run clean && rollup -c",
7
- "clean": "rimraf */build/",
7
+ "serve": "echo \"server not setup\"",
8
+ "clean": "rimraf build",
8
9
  "start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\""
9
10
  },
10
11
  "devDependencies": {
11
- "@builder.io/qwik": "~0.0.14",
12
+ "@builder.io/qwik": "0.0.16-1",
12
13
  "@rollup/plugin-node-resolve": "^13.0.6",
13
- "@rollup/plugin-typescript": "^8.3.0",
14
14
  "concurrently": "^6.4.0",
15
15
  "rimraf": "^3.0.2",
16
16
  "rollup": "^2.59.0",
@@ -1,25 +1,27 @@
1
1
  import { nodeResolve } from '@rollup/plugin-node-resolve';
2
2
  import { qwikRollup } from '@builder.io/qwik/optimizer';
3
- import typescript from '@rollup/plugin-typescript';
3
+ import { writeFile, mkdir } from "fs/promises";
4
+ import { dirname } from "path";
4
5
 
5
6
  export default async function () {
6
7
  return {
7
8
  input: [
8
- 'src/index.server.qwik.tsx',
9
- 'src/my-app.qwik.tsx'
9
+ 'src/index.server.tsx',
10
+ 'src/my-app.tsx'
10
11
  ],
11
12
  plugins: [
12
13
  nodeResolve(),
13
14
  qwikRollup({
14
- symbolsPath: 'q-symbols.json',
15
- }),
16
- typescript(),
15
+ symbolsOutput: (data) => {
16
+ outputJSON('./server/build/q-symbols.json', data);
17
+ },
18
+ })
17
19
  ],
18
20
  output: [
19
21
  {
20
22
  chunkFileNames: 'q-[hash].js',
21
23
  dir: 'public/build',
22
- format: 'es',
24
+ format: 'es',
23
25
  },
24
26
  {
25
27
  dir: 'server/build',
@@ -28,3 +30,8 @@ export default async function () {
28
30
  ],
29
31
  };
30
32
  }
33
+
34
+ async function outputJSON(path, data) {
35
+ await mkdir(dirname(path), {recursive: true});
36
+ await writeFile(path, JSON.stringify(data, null, 2));
37
+ }
@@ -8,20 +8,20 @@
8
8
 
9
9
  import { h } from '@builder.io/qwik';
10
10
  import { renderToString, RenderToStringOptions, QwikLoader } from '@builder.io/qwik/server';
11
- import { Footer, Header } from './my-app.qwik';
11
+ import { Footer, Header } from './my-app';
12
12
 
13
13
  /**
14
14
  * Entry point for server-side pre-rendering.
15
15
  *
16
16
  * @returns a promise when all of the rendering is completed.
17
17
  */
18
- export default function serverRender(opts: RenderToStringOptions) {
18
+ export function renderApp(opts: RenderToStringOptions) {
19
19
  return renderToString(
20
20
  <html>
21
21
  <head>
22
22
  <title>Qwik Blank App</title>
23
23
  </head>
24
- <body>
24
+ <body q:base="/build/">
25
25
  <Header />
26
26
  <div id="my-content"></div>
27
27
  <Footer />
@@ -1,16 +1,16 @@
1
1
  {
2
- "name": "qwik-starter-partytown",
2
+ "name": "qwik-project-name",
3
3
  "version": "0.0.1",
4
4
  "description": "Blank starter app with Partytown",
5
5
  "scripts": {
6
6
  "build": "npm run clean && rollup -c",
7
7
  "clean": "rimraf */build/",
8
- "start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\""
8
+ "start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\"",
9
+ "serve": "echo \"server not setup\""
9
10
  },
10
11
  "devDependencies": {
11
- "@builder.io/qwik": "~0.0.14",
12
+ "@builder.io/qwik": "0.0.16-1",
12
13
  "@rollup/plugin-node-resolve": "^13.0.6",
13
- "@rollup/plugin-typescript": "^8.3.0",
14
14
  "concurrently": "^6.4.0",
15
15
  "rimraf": "^3.0.2",
16
16
  "rollup": "^2.59.0",
@@ -1,25 +1,27 @@
1
1
  import { nodeResolve } from '@rollup/plugin-node-resolve';
2
2
  import { qwikRollup } from '@builder.io/qwik/optimizer';
3
- import typescript from '@rollup/plugin-typescript';
3
+ import { writeFile, mkdir } from "fs/promises";
4
+ import { dirname } from "path";
4
5
 
5
6
  export default async function () {
6
7
  return {
7
8
  input: [
8
- 'src/index.server.qwik.tsx',
9
- 'src/my-app.qwik.tsx'
9
+ 'src/index.server.tsx',
10
+ 'src/my-app.tsx'
10
11
  ],
11
12
  plugins: [
12
13
  nodeResolve(),
13
14
  qwikRollup({
14
- symbolsPath: 'q-symbols.json',
15
- }),
16
- typescript(),
15
+ symbolsOutput: (data) => {
16
+ outputJSON('./server/build/q-symbols.json', data);
17
+ },
18
+ })
17
19
  ],
18
20
  output: [
19
21
  {
20
22
  chunkFileNames: 'q-[hash].js',
21
23
  dir: 'public/build',
22
- format: 'es',
24
+ format: 'es',
23
25
  },
24
26
  {
25
27
  dir: 'server/build',
@@ -28,3 +30,8 @@ export default async function () {
28
30
  ],
29
31
  };
30
32
  }
33
+
34
+ async function outputJSON(path, data) {
35
+ await mkdir(dirname(path), {recursive: true});
36
+ await writeFile(path, JSON.stringify(data, null, 2));
37
+ }
@@ -8,21 +8,21 @@
8
8
 
9
9
  import { h } from '@builder.io/qwik';
10
10
  import { renderToString, RenderToStringOptions, QwikLoader } from '@builder.io/qwik/server';
11
- import { MyApp } from './my-app.qwik';
11
+ import { MyApp } from './my-app';
12
12
 
13
13
  /**
14
14
  * Entry point for server-side pre-rendering.
15
15
  *
16
16
  * @returns a promise when all of the rendering is completed.
17
17
  */
18
- export default function serverRender(opts: RenderToStringOptions) {
18
+ export function renderApp(opts: RenderToStringOptions) {
19
19
  return renderToString(
20
20
  <html>
21
21
  <head>
22
22
  <title>Qwik + Partytown Blank App</title>
23
23
  <script defer async src="~partytown/debug/partytown.js"></script>
24
24
  </head>
25
- <body>
25
+ <body q:base="/build/">
26
26
  <MyApp />
27
27
  <script type="text/partytown">
28
28
  ({partyTownExampleWhichBlocksMainThreadForOneSecond.toString()})()
@@ -1,20 +1,22 @@
1
1
  {
2
- "name": "qwik-todo-express",
2
+ "name": "qwik-project-name",
3
3
  "version": "0.0.1",
4
4
  "description": "Classic Todo MVC app",
5
5
  "scripts": {
6
6
  "build": "npm run clean && rollup -c",
7
7
  "clean": "rimraf */build/",
8
+ "serve": "echo 'missing server'",
8
9
  "start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\""
9
10
  },
10
11
  "devDependencies": {
11
- "@builder.io/qwik": "~0.0.14",
12
+ "@builder.io/qwik": "0.0.16-1",
12
13
  "@rollup/plugin-node-resolve": "^13.0.6",
13
- "@rollup/plugin-typescript": "^8.3.0",
14
14
  "concurrently": "^6.4.0",
15
15
  "rimraf": "^3.0.2",
16
16
  "rollup": "^2.59.0",
17
- "typescript": "^4.5.2"
17
+ "rollup-plugin-terser": "^7.0.2",
18
+ "typescript": "^4.5.2",
19
+ "wait-on": "^6.0.0"
18
20
  },
19
21
  "author": "Builder.io Team",
20
22
  "license": "MIT",
@@ -1,25 +1,29 @@
1
1
  import { nodeResolve } from '@rollup/plugin-node-resolve';
2
2
  import { qwikRollup } from '@builder.io/qwik/optimizer';
3
- import typescript from '@rollup/plugin-typescript';
3
+ import { terser } from "rollup-plugin-terser";
4
+ import { writeFile, mkdir } from "fs/promises";
5
+ import { dirname } from "path";
4
6
 
5
7
  export default async function () {
6
8
  return {
7
9
  input: [
8
- 'src/index.server.qwik.tsx',
9
- 'src/components.qwik.tsx'
10
+ 'src/index.server.tsx',
11
+ 'src/components.tsx'
10
12
  ],
11
13
  plugins: [
12
14
  nodeResolve(),
13
15
  qwikRollup({
14
- symbolsPath: 'q-symbols.json',
15
- }),
16
- typescript(),
16
+ symbolsOutput: (data) => {
17
+ outputJSON('./server/build/q-symbols.json', data);
18
+ },
19
+ }),
20
+ terser(),
17
21
  ],
18
22
  output: [
19
23
  {
20
24
  chunkFileNames: 'q-[hash].js',
21
25
  dir: 'public/build',
22
- format: 'es',
26
+ format: 'es',
23
27
  },
24
28
  {
25
29
  dir: 'server/build',
@@ -28,3 +32,8 @@ export default async function () {
28
32
  ],
29
33
  };
30
34
  }
35
+
36
+ async function outputJSON(path, data) {
37
+ await mkdir(dirname(path), {recursive: true});
38
+ await writeFile(path, JSON.stringify(data, null, 2));
39
+ }
@@ -19,7 +19,7 @@ import {
19
19
  Todos,
20
20
  toggleItem,
21
21
  updateFilter,
22
- } from './state.qwik';
22
+ } from './state';
23
23
  /* eslint no-console: ["off"] */
24
24
 
25
25
  // TODO(misko): APIs for better debugger experience: qProps
@@ -8,15 +8,15 @@
8
8
 
9
9
  import { h } from '@builder.io/qwik';
10
10
  import { renderToString, RenderToStringOptions, QwikLoader } from '@builder.io/qwik/server';
11
- import { ToDoApp } from './components.qwik';
12
- import type { Todos } from './state.qwik';
11
+ import { ToDoApp } from './components';
12
+ import type { Todos } from './state';
13
13
 
14
14
  /**
15
15
  * Entry point for server-side pre-rendering.
16
16
  *
17
17
  * @returns a promise when all of the rendering is completed.
18
18
  */
19
- export default function serverRender(opts: RenderToStringOptions) {
19
+ export function renderApp(opts: RenderToStringOptions) {
20
20
  const todos: Todos = {
21
21
  filter: 'all',
22
22
  items: [
@@ -30,10 +30,10 @@ export default function serverRender(opts: RenderToStringOptions) {
30
30
  <html>
31
31
  <head>
32
32
  <title>Qwik Demo: ToDo</title>
33
- <link rel="stylesheet" href="base.css" />
34
- <link rel="stylesheet" href="index.css" />
33
+ <link rel="stylesheet" href="/base.css" />
34
+ <link rel="stylesheet" href="/index.css" />
35
35
  </head>
36
- <body>
36
+ <body q:base="/build/">
37
37
  <ToDoApp todos={todos} />
38
38
  <QwikLoader debug={opts.debug} />
39
39
  </body>
@@ -7,6 +7,7 @@
7
7
  "jsxFactory": "h",
8
8
  "jsxFragmentFactory": "Fragment",
9
9
  "strict": true,
10
+ "resolveJsonModule": true,
10
11
  "moduleResolution": "node",
11
12
  "esModuleInterop": true,
12
13
  "skipLibCheck": true,
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "qwik-project-name",
3
+ "description": "Cloudflare Workers (serverless)",
4
+ "priority": -1,
5
+ "scripts": {
6
+ "build": "npm run clean && npm run build.client && npm run build.server",
7
+ "build.client": "rollup -c",
8
+ "build.server": "rollup -c rollup.config.server.js",
9
+ "deploy": "wrangler publish",
10
+ "start": "wrangler dev"
11
+ },
12
+ "devDependencies": {
13
+ "@cloudflare/kv-asset-handler": "^0.2.0",
14
+ "@cloudflare/workers-types": "^3.2.0",
15
+ "@types/service-worker-mock": "^2.0.1",
16
+ "@rollup/plugin-commonjs": "^21.0.1",
17
+ "@rollup/plugin-json": "^4.1.0"
18
+ }
19
+ }
@@ -0,0 +1,29 @@
1
+ import { nodeResolve } from '@rollup/plugin-node-resolve';
2
+ import { qwikRollup } from '@builder.io/qwik/optimizer';
3
+ import jsonPlugin from '@rollup/plugin-json';
4
+ import commonjs from '@rollup/plugin-commonjs';
5
+
6
+ export default async function () {
7
+ return {
8
+ input: {
9
+ index: 'src/index.cloudflare.tsx',
10
+ },
11
+ inlineDynamicImports: true,
12
+ plugins: [
13
+ nodeResolve(),
14
+ jsonPlugin(),
15
+ qwikRollup({
16
+ entryStrategy: {
17
+ type: 'single',
18
+ },
19
+ }),
20
+ commonjs(),
21
+ ],
22
+ output: [
23
+ {
24
+ dir: 'workers-site/build',
25
+ format: 'commonjs',
26
+ },
27
+ ],
28
+ };
29
+ }
@@ -0,0 +1,82 @@
1
+ import { renderApp } from './index.server';
2
+ import { getAssetFromKV } from '@cloudflare/kv-asset-handler';
3
+ import symbols from '../server/build/q-symbols.json';
4
+
5
+ const CACHING = true;
6
+
7
+ addEventListener('fetch', (event: any) => {
8
+ event.respondWith(handleRequest(event));
9
+ });
10
+
11
+ async function handleRequest(event: any) {
12
+ const request = event.request;
13
+ const url = new URL(request.url);
14
+
15
+ if (/\.\w+$/.test(url.pathname)) {
16
+ // If path ends with extension, serve static file
17
+ return handleStaticAssets(event, url);
18
+ } else {
19
+ // Otherwise Server side render qwik
20
+ return handleQwik(event, request);
21
+ }
22
+ }
23
+
24
+ async function handleQwik(event: any, request: Request) {
25
+ const cache = await caches.open('custom:qwik');
26
+ if (CACHING) {
27
+ const cachedResponse = await cache.match(request);
28
+ if (cachedResponse) {
29
+ return cachedResponse;
30
+ }
31
+ }
32
+
33
+ const ssrResult = await renderApp({
34
+ url: new URL(request.url),
35
+ symbols,
36
+ });
37
+
38
+ const response = new Response(ssrResult.html, {
39
+ headers: {
40
+ 'Content-Type': 'text/html',
41
+ 'Cache-Control': `max-age=${60}`,
42
+ },
43
+ });
44
+ if (CACHING) {
45
+ event.waitUntil(cache.put(request, response.clone()));
46
+ }
47
+ return response;
48
+ }
49
+
50
+ async function handleStaticAssets(event: any, url: URL) {
51
+ try {
52
+ // Server static file
53
+ const options = CACHING
54
+ ? {
55
+ cacheControl(req: Request) {
56
+ const inmmutable = /\/q-\w+\.\w+$/.test(req.url);
57
+ if (inmmutable) {
58
+ return {
59
+ browserTTL: 31536000,
60
+ edgeTTL: 31536000,
61
+ bypassCache: false,
62
+ };
63
+ }
64
+ return {
65
+ browserTTL: 60 * 60,
66
+ edgeTTL: 60,
67
+ bypassCache: false,
68
+ };
69
+ },
70
+ }
71
+ : undefined;
72
+
73
+ const staticResponse = await getAssetFromKV(event, options);
74
+ return staticResponse;
75
+ } catch (e) {
76
+ // Handle 404
77
+ return new Response(`"${url.pathname}" not found`, {
78
+ status: 404,
79
+ statusText: 'not found',
80
+ });
81
+ }
82
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "cloudflare-worker",
3
+ "main": "build/index.js"
4
+ }
@@ -0,0 +1,18 @@
1
+ name = "qwik-project-name"
2
+ type = "javascript"
3
+
4
+ account_id = ""
5
+ workers_dev = true
6
+ route = ""
7
+ zone_id = ""
8
+ compatibility_date = "2021-12-13"
9
+
10
+ [build]
11
+ command = "npm run build"
12
+
13
+ [build.upload]
14
+ format = "service-worker"
15
+
16
+ [site]
17
+ bucket = "public" # directory with your static assets
18
+ entry-point = "workers-site" # JS folder serving your assets
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "express",
2
+ "name": "qwik-project-name",
3
3
  "description": "Express.js Server",
4
4
  "scripts": {
5
5
  "serve": "node server/index.js"
@@ -1,21 +1,15 @@
1
1
  const express = require('express');
2
- const path = require('path');
3
- const qwik = require('@builder.io/qwik/server');
4
2
  const { join } = require('path');
5
3
  const { existsSync } = require('fs');
6
-
4
+ const { renderApp } = require('./build/index.server.js');
5
+ const symbols = require('./build/q-symbols.json');
7
6
  const PORT = process.env.PORT || 8080;
8
7
 
9
8
  async function startServer() {
10
- const render = await qwik.createServerRenderer({
11
- serverDir: path.join(__dirname, 'build'),
12
- serverMainPath: 'index.server.qwik.js',
13
- symbolsPath: 'q-symbols.json',
14
- });
15
-
16
- async function indexHandler(req, res) {
17
- const result = await render({
18
- url: req.url,
9
+ async function handleQwik(req, res) {
10
+ const result = await renderApp({
11
+ symbols,
12
+ url: new URL(req.url),
19
13
  debug: true,
20
14
  });
21
15
  res.send(result.html);
@@ -23,9 +17,7 @@ async function startServer() {
23
17
 
24
18
  const app = express();
25
19
  const publicDir = join(__dirname, '..', 'public');
26
- const buildDir = join(__dirname, '..', 'public', 'build');
27
20
  app.use(express.static(publicDir));
28
- app.use(express.static(buildDir));
29
21
 
30
22
  // Optionally server Partytown if found.
31
23
  const partytownDir = join(__dirname, '..', 'node_modules', '@builder.io', 'partytown', 'lib');
@@ -33,7 +25,8 @@ async function startServer() {
33
25
  app.use('/~partytown', express.static(partytownDir));
34
26
  }
35
27
 
36
- app.get('/', indexHandler);
28
+ app.get('/', handleQwik);
29
+
37
30
  app.listen(PORT, () => {
38
31
  // eslint-disable-next-line no-console
39
32
  console.log(`http://localhost:${PORT}/`);