17c3c98f07
* Begin debugging * Initial tests set up This adds tests using uvu (we can switch if people want) and restructures things a bit so that it's easier to test. Like in snowpack you set up a little project. In our tests you can say: ```js const result = await runtime.load('/blog/hello-world') ``` And analyze the result. I included a `test-helpers.js` which has a function that will turn HTML into a cheerio instance, for inspecting the result HTML. * Add CI * Remove extra console logs * Formatting
22 lines
797 B
TypeScript
22 lines
797 B
TypeScript
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);
|
|
astroConfig.hmxRoot = new URL(astroConfig.hmxRoot + '/', fileProtocolRoot);
|
|
return astroConfig;
|
|
}
|