UNPKG

@kobalte/solidbase

Version:

Fully featured, fully customisable static site generation for SolidStart

63 lines 2.31 kB
import { dirname, parse } from "node:path"; import defaultTheme from "../default-theme/index.js"; import { solidBaseMdx } from "./mdx.js"; import solidBaseVitePlugin from "./vite-plugin/index.js"; export const withSolidBase = createWithSolidBase(defaultTheme); export function createWithSolidBase(theme) { if (parse(theme.componentsPath).ext !== "") { theme.componentsPath = dirname(theme.componentsPath); } return (startConfig, solidBaseConfig) => { const config = startConfig ?? {}; process.env.PORT ??= "4000"; config.extensions = [ ...new Set((config.extensions ?? []).concat(["md", "mdx"])), ]; config.server ??= {}; config.server.prerender ??= { crawlLinks: true, }; const sbConfig = { title: "SolidBase", description: "Fully featured, fully customisable static site generation for SolidStart", lang: "en-US", issueAutolink: false, lastUpdated: { dateStyle: "short", timeStyle: "short" }, ...solidBaseConfig, }; let t = theme; while (t !== undefined) { if (t.config) t.config(sbConfig); t = t.extends; } const vite = config.vite; config.vite = (options) => { const viteConfig = typeof vite === "function" ? vite(options) : { ...(vite ?? {}) }; ((viteConfig.optimizeDeps ??= {}).exclude ??= []).push("fsevents"); viteConfig.plugins = [...(viteConfig.plugins ?? [])]; viteConfig.plugins.push(solidBaseMdx(sbConfig)); viteConfig.plugins.push(solidBaseVitePlugin(theme, sbConfig)); let t = theme; const plugins = []; while (t !== undefined) { if (t.vite) { const contents = t.vite(sbConfig); if (contents) plugins.push(contents); } t = t.extends; } plugins.reverse(); viteConfig.plugins.push(...plugins); return viteConfig; }; return config; }; } export function defineTheme(def) { return def; } //# sourceMappingURL=index.js.map