import type { AstroConfig } from './@types/astro'; import { join as pathJoin, resolve as pathResolve } from 'path'; import { existsSync } from 'fs'; /** Attempt to load an `astro.config.mjs` file */ export async function loadConfig(rawRoot: string | undefined): Promise { if (typeof rawRoot === 'undefined') { rawRoot = process.cwd(); } const root = pathResolve(rawRoot); const fileProtocolRoot = `file://${root}/`; const astroConfigPath = pathJoin(root, 'astro.config.mjs'); if (!existsSync(astroConfigPath)) { return undefined; } const astroConfig: AstroConfig = (await import(astroConfigPath)).default; astroConfig.projectRoot = new URL(astroConfig.projectRoot + '/', fileProtocolRoot); astroConfig.astroRoot = new URL(astroConfig.astroRoot + '/', fileProtocolRoot); const publicFolder = astroConfig.public ? astroConfig.public + '/' : './public/'; astroConfig.public = new URL(publicFolder, fileProtocolRoot); return astroConfig; }