diff options
Diffstat (limited to 'src/config.ts')
-rw-r--r-- | src/config.ts | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 000000000..da58b7a03 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,22 @@ +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; +} |