nyvora.app/astro.config.ts
2025-06-14 23:08:25 -06:00

76 lines
2.4 KiB
TypeScript

import { defineConfig } from "astro/config";
import type { Plugin } from "vite";
import wisp from "wisp-server-node";
import node from "@astrojs/node";
import tailwindcss from "@tailwindcss/vite";
import icon from "astro-icon";
import { viteStaticCopy } from "vite-plugin-static-copy";
import playformCompress from "@playform/compress";
import { uvPath } from "@titaniumnetwork-dev/ultraviolet";
import { scramjetPath } from "@mercuryworkshop/scramjet";
//@ts-expect-error No types
import { epoxyPath } from "@mercuryworkshop/epoxy-transport";
import { libcurlPath } from "@mercuryworkshop/libcurl-transport";
import { baremuxPath } from "@mercuryworkshop/bare-mux/node";
const viteWispServer = (): Plugin => {
return {
name: "vite-wisp-server",
configureServer(server) {
server.httpServer?.on("upgrade", (req, socket, head) => {
req.url.startsWith("/wisp") || req.url.startsWith("/adblock") ? wisp.routeRequest(req, socket, head) : undefined;
});
}
};
};
export default defineConfig({
vite: {
plugins: [
//@ts-ignore
tailwindcss(),
//@ts-ignore
viteWispServer(),
//@ts-ignore
viteStaticCopy({
targets: [
{ src: `${uvPath}/**/*`.replace(/\\/g, "/"), dest: "vu", overwrite: false },
{
src: `${scramjetPath}/**/*`.replace(/\\/g, "/"),
dest: "marcs",
overwrite: false
},
{
src: `${baremuxPath}/**/*`.replace(/\\/g, "/"),
dest: "erab",
overwrite: false
},
{
src: `${epoxyPath}/**/*`.replace(/\\/g, "/"),
dest: "epoxy",
overwrite: false
},
{
src: `${libcurlPath}/**/*`.replace(/\\/g, "/"),
dest: "libcurl",
overwrite: false
}
]
})
]
},
integrations: [
icon(),
playformCompress({
CSS: false,
HTML: true,
Image: true,
JavaScript: true,
SVG: true
})
],
output: "server",
adapter: node({
mode: "middleware"
})
});