@kobalte/solidbase
Version:
Fully featured, fully customisable static site generation for SolidStart
63 lines • 2.31 kB
JavaScript
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