Skip to content

Instantly share code, notes, and snippets.

@DimitryDushkin
Created April 6, 2024 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DimitryDushkin/dd2c47c987ac569a818d355863440382 to your computer and use it in GitHub Desktop.
Save DimitryDushkin/dd2c47c987ac569a818d355863440382 to your computer and use it in GitHub Desktop.
server.ts for bun + remix
import type { ServerBuild } from "@remix-run/node";
import { createRequestHandler } from "@remix-run/server-runtime";
import { serve } from "bun";
import { resolve } from "node:path";
process.env.REMIX_DEV_ORIGIN = "https://localhost";
// @see https://remix.run/docs/en/main/future/vite#migrating-a-custom-server
const viteDevServer =
process.env.NODE_ENV === "production"
? undefined
: await import("vite").then((vite) =>
vite.createServer({
server: { middlewareMode: true },
appType: "custom",
}),
);
const BUILD_PATH = "./build/server/index.js";
const build: ServerBuild = viteDevServer
? () => viteDevServer.ssrLoadModule("virtual:remix/server-build")
: await import(BUILD_PATH);
const remix = createRequestHandler(build, process.env.NODE_ENV);
serve({
development: true,
port: 3000,
hostname: "localhost",
async fetch(request: Request) {
const url = new URL(request.url);
let file = Bun.file(resolve(__dirname, "../public/", `.${url.pathname}`));
if (await file.exists()) {
return new Response(file);
}
const loadContext = {};
const response = await remix(request, loadContext);
console.log(response);
return response;
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment