@zyrab/domo-ssg
Version:
A Static Site Generator (SSG) for Domo-based projects.
49 lines (43 loc) • 1.54 kB
JavaScript
// src/config.js
import path from "path";
import { pathToFileURL } from "url";
let mergedConfig = null;
export async function loadConfig() {
if (mergedConfig) return mergedConfig;
const userConfigPath = path.resolve(process.cwd(), "domo.config.js");
const defaultConfig = {
outDir: "./dist",
scanDir: "./src",
routesFile: "./routes.js",
layout: "./layout.js",
lang: "en",
author: "Zyrab",
assetsDir: [
{ current: "src/assets", final: "assets" },
{ current: "src/styles", final: "styles" },
],
exclude: ["css", "js", "assets", "robots.txt", "admin"],
baseUrl: "http://localhost:3000",
};
let userConfig = {};
try {
const importedConfig = await import(pathToFileURL(userConfigPath).href);
userConfig = importedConfig.default || importedConfig;
} catch (error) {
console.warn(`[Domo-SSG] No custom config file found at ${configFilePath}. Using default settings.`);
}
mergedConfig = {
...defaultConfig,
...userConfig,
outDir: path.resolve(process.cwd(), userConfig.outDir || defaultConfig.outDir),
routesFile: path.resolve(process.cwd(), userConfig.routesFile || defaultConfig.routesFile),
layout: path.resolve(process.cwd(), userConfig.layout || defaultConfig.layout),
};
return mergedConfig;
}
export function getConfig() {
if (!mergedConfig) {
throw new Error("[Domo-SSG] Interal Error: Config has not been loaded yet. Call loadConfig() first.");
}
return mergedConfig;
}