UNPKG

@zyrab/domo-ssg

Version:

A Static Site Generator (SSG) for Domo-based projects.

49 lines (43 loc) 1.54 kB
// 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; }