2026-07-04 23:06:23 +00:00
|
|
|
import { readFileSync } from "node:fs";
|
2026-07-04 22:53:10 +00:00
|
|
|
import { defineConfig } from "astro/config";
|
2026-07-04 23:06:23 +00:00
|
|
|
|
|
|
|
|
const siteConfig = JSON.parse(
|
|
|
|
|
readFileSync(new URL("./src/config/site.json", import.meta.url)),
|
|
|
|
|
);
|
2026-07-04 22:53:10 +00:00
|
|
|
import mdx from "@astrojs/mdx";
|
Baseline: full site build (brand, pages, DB, agent-editable)
Establishes the deploy baseline on main so the admin agent's publish/rollback
has a clean starting point. Everything built to date: sumi-e brand system,
homepage, projects (DB-driven case studies), resume, about, services +
website-design detail, contact form + DB, changelog, favicon + share card.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DoFYZY9gkGPNDqZ7NuEa9a
2026-07-23 20:21:28 +00:00
|
|
|
import react from "@astrojs/react";
|
2026-07-04 22:53:10 +00:00
|
|
|
import tailwindcss from "@tailwindcss/vite";
|
|
|
|
|
|
|
|
|
|
const site =
|
2026-07-04 23:06:23 +00:00
|
|
|
process.env.SITE_URL || process.env.PUBLIC_SITE_URL || siteConfig.url;
|
2026-07-04 22:53:10 +00:00
|
|
|
|
|
|
|
|
export default defineConfig({
|
|
|
|
|
site,
|
|
|
|
|
// astroagent overrides outDir for isolated preview builds (PREVIEW_OUT);
|
|
|
|
|
// falls back to the live output for normal/cron builds.
|
|
|
|
|
outDir: process.env.PREVIEW_OUT || "../public",
|
|
|
|
|
// For previews, PREVIEW_BASE prefixes asset paths (/_preview/<id>) so the
|
|
|
|
|
// preview is self-contained and doesn't pull _astro/fonts from the live site.
|
|
|
|
|
base: process.env.PREVIEW_BASE || undefined,
|
Baseline: full site build (brand, pages, DB, agent-editable)
Establishes the deploy baseline on main so the admin agent's publish/rollback
has a clean starting point. Everything built to date: sumi-e brand system,
homepage, projects (DB-driven case studies), resume, about, services +
website-design detail, contact form + DB, changelog, favicon + share card.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DoFYZY9gkGPNDqZ7NuEa9a
2026-07-23 20:21:28 +00:00
|
|
|
integrations: [mdx(), react()],
|
2026-07-04 22:53:10 +00:00
|
|
|
vite: {
|
|
|
|
|
plugins: [tailwindcss()],
|
Baseline: full site build (brand, pages, DB, agent-editable)
Establishes the deploy baseline on main so the admin agent's publish/rollback
has a clean starting point. Everything built to date: sumi-e brand system,
homepage, projects (DB-driven case studies), resume, about, services +
website-design detail, contact form + DB, changelog, favicon + share card.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DoFYZY9gkGPNDqZ7NuEa9a
2026-07-23 20:21:28 +00:00
|
|
|
resolve: {
|
|
|
|
|
alias: {
|
|
|
|
|
// shadcn / 21st.dev convention — paste components in unmodified.
|
|
|
|
|
"@": new URL("./src", import.meta.url).pathname,
|
|
|
|
|
// Those components import useTheme from "next-themes", which is a
|
|
|
|
|
// Next.js package. Point it at a local shim that drives the existing
|
|
|
|
|
// class-based theme instead. See src/lib/next-themes.ts.
|
|
|
|
|
"next-themes": new URL("./src/lib/next-themes.ts", import.meta.url).pathname,
|
|
|
|
|
},
|
|
|
|
|
},
|
2026-07-04 22:53:10 +00:00
|
|
|
build: {
|
|
|
|
|
emptyOutDir: false,
|
|
|
|
|
},
|
|
|
|
|
},
|
Baseline: full site build (brand, pages, DB, agent-editable)
Establishes the deploy baseline on main so the admin agent's publish/rollback
has a clean starting point. Everything built to date: sumi-e brand system,
homepage, projects (DB-driven case studies), resume, about, services +
website-design detail, contact form + DB, changelog, favicon + share card.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DoFYZY9gkGPNDqZ7NuEa9a
2026-07-23 20:21:28 +00:00
|
|
|
});
|