Skip to content

Commit 7941ea6

Browse files
committed
no need to serve assets with h3
1 parent da20932 commit 7941ea6

1 file changed

Lines changed: 12 additions & 39 deletions

File tree

packages/start/src/config/dev-server.ts

Lines changed: 12 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,50 +6,21 @@ import {
66
type ViteDevServer,
77
} from "vite";
88
import { VITE_ENVIRONMENTS } from "./constants.ts";
9-
import { join, resolve } from "node:path";
10-
import { H3, serveStatic } from "h3";
11-
import { stat, readFile } from "node:fs/promises";
12-
13-
type Server = {
14-
default: { fetch: (req: Request) => Promise<Response> };
15-
};
169

1710
export function devServer(): Array<PluginOption> {
1811
return [
1912
{
2013
name: "solid-start-dev-server",
21-
async configurePreviewServer(vitePreviewServer) {
22-
const { default: h3App }: Server = await import(
23-
resolve(process.cwd(), "dist/server/entry-server.js")
24-
);
25-
const app = new H3();
26-
app.use("/_build/**", event => {
27-
return serveStatic(event, {
28-
indexNames: ["/index.html"],
29-
headers: { "cache-control": "public, max-age=3156000, immutable" },
30-
getContents: id => readFile(join(process.cwd(), "dist/client", id)),
31-
getMeta: async id => {
32-
const stats = await stat(join("dist/client", id)).catch(() => {});
33-
if (stats?.isFile()) {
34-
return {
35-
size: stats.size,
36-
mtime: stats.mtimeMs,
37-
};
38-
}
39-
},
40-
});
41-
});
42-
app.mount("/", h3App);
43-
44-
return async () => {
45-
vitePreviewServer.middlewares.use(async (req, res) => {
46-
// fix streaming because vite uses gzip by default
47-
res.setHeader("Content-Encoding", "identity");
48-
14+
configurePreviewServer(server) {
15+
return () => {
16+
globalThis.canSendFastNodeStreams = true;
17+
server.middlewares.use(async (req, res) => {
18+
res.setHeader("content-encoding", "identity");
4919
const webReq = new NodeRequest({ req, res });
50-
51-
const webRes = await app.fetch(webReq);
52-
sendNodeResponse(res, webRes);
20+
const def: {
21+
default: { fetch: (req: Request) => Promise<Response> };
22+
} = await import(process.cwd() + "/dist/server/entry-server.js");
23+
sendNodeResponse(res, await def.default.fetch(webReq));
5324
});
5425
};
5526
},
@@ -82,7 +53,9 @@ export function devServer(): Array<PluginOption> {
8253
const webReq = new NodeRequest({ req, res });
8354

8455
try {
85-
const serverEntry: Server = await serverEnv.runner.import("./src/entry-server.tsx");
56+
const serverEntry: {
57+
default: { fetch: (req: Request) => Promise<Response> };
58+
} = await serverEnv.runner.import("./src/entry-server.tsx");
8659

8760
const webRes = await serverEntry.default.fetch(webReq);
8861

0 commit comments

Comments
 (0)