2021-03-19 21:07:45 +00:00
|
|
|
import type { AstroConfig } from './@types/astro';
|
|
|
|
import { join as pathJoin, resolve as pathResolve } from 'path';
|
|
|
|
import { existsSync } from 'fs';
|
|
|
|
|
|
|
|
export async function loadConfig(rawRoot: string | undefined): Promise<AstroConfig | undefined> {
|
|
|
|
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);
|
2021-03-24 15:45:38 +00:00
|
|
|
astroConfig.astroRoot = new URL(astroConfig.astroRoot + '/', fileProtocolRoot);
|
2021-03-30 13:24:26 +00:00
|
|
|
|
|
|
|
const publicFolder = astroConfig.public ? astroConfig.public + '/' : './public/';
|
|
|
|
astroConfig.public = new URL(publicFolder, fileProtocolRoot);
|
2021-03-19 21:07:45 +00:00
|
|
|
return astroConfig;
|
|
|
|
}
|