summaryrefslogtreecommitdiff
path: root/src/config.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/config.ts')
-rw-r--r--src/config.ts22
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;
+}