1
0
Fork 0
mirror of https://github.com/kou029w/_.git synced 2025-01-30 13:58:08 +00:00

create astro-fastify

This commit is contained in:
Nebel 2024-03-23 19:37:55 +09:00
parent e9b42a86e4
commit c5b6327a2e
Signed by: nebel
GPG key ID: 79807D08C6EF6460
7 changed files with 4621 additions and 0 deletions

View file

@ -0,0 +1,9 @@
import { defineConfig } from "astro/config";
import node from "@astrojs/node";
export default defineConfig({
output: "server",
adapter: node({
mode: "middleware",
}),
});

View file

@ -0,0 +1,21 @@
{
"name": "@kou029w/astro-fastify",
"version": "0.0.0",
"private": true,
"license": "MIT",
"type": "module",
"scripts": {
"dev": "fastify start --log-level=info --debug --watch server.js -- --dev",
"build": "astro build",
"start": "fastify start server.js"
},
"devDependencies": {
"@astrojs/node": "^8.2.5",
"@fastify/http-proxy": "^9.5.0",
"@fastify/middie": "^8.3.0",
"@fastify/static": "^7.0.1",
"astro": "^4.5.9",
"fastify": "^4.26.2",
"fastify-cli": "^6.1.1"
}
}

4553
astro-fastify/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
public

27
astro-fastify/server.js Normal file
View file

@ -0,0 +1,27 @@
import fastifyMiddie from "@fastify/middie";
import fastifyStatic from "@fastify/static";
import { fileURLToPath } from "node:url";
/** @type {import("fastify").FastifyPluginAsync} */
const app = async (fastify, opts) => {
fastify.get("/hello", async () => "hello");
if (opts.dev) {
const astro = await import("astro");
const astroDevServer = await astro.dev();
await fastify.register(await import("@fastify/http-proxy"), {
upstream: `http://localhost:${astroDevServer.address.port}`,
});
} else {
await fastify.register(fastifyStatic, {
root: fileURLToPath(import.meta.resolve("./dist/client")),
});
await fastify.register(fastifyMiddie);
const astroServer = await import("./dist/server/entry.mjs");
fastify.use(astroServer.handler);
}
fastify.get("/world", async () => "world");
};
export default app;

1
astro-fastify/src/env.d.ts vendored Normal file
View file

@ -0,0 +1 @@
/// <reference types="astro/client" />

View file

@ -0,0 +1,9 @@
import type { APIRoute } from "astro";
export const GET: APIRoute = () => {
return new Response(
JSON.stringify({
number: Math.random(),
}),
);
};