diff --git a/apps/api/src/env.ts b/apps/api/src/env.ts index 70c0755..9090f20 100644 --- a/apps/api/src/env.ts +++ b/apps/api/src/env.ts @@ -1,4 +1,4 @@ -import "dotenv/config"; +import "@peya-explorer/shared/load-env"; import { z } from "zod"; const envSchema = z.object({ @@ -12,4 +12,3 @@ const envSchema = z.object({ }); export const env = envSchema.parse(process.env); - diff --git a/apps/indexer/src/env.ts b/apps/indexer/src/env.ts index f3bd466..3eb6f9a 100644 --- a/apps/indexer/src/env.ts +++ b/apps/indexer/src/env.ts @@ -1,4 +1,4 @@ -import "dotenv/config"; +import "@peya-explorer/shared/load-env"; import { z } from "zod"; const envSchema = z.object({ @@ -13,4 +13,3 @@ const envSchema = z.object({ }); export const env = envSchema.parse(process.env); - diff --git a/packages/shared/package.json b/packages/shared/package.json index 5fa1f0b..d81e49c 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -4,9 +4,12 @@ "private": true, "type": "module", "main": "./dist/index.js", + "exports": { + ".": "./dist/index.js", + "./load-env": "./dist/load-env.js" + }, "types": "./dist/index.d.ts", "scripts": { "build": "tsc -p tsconfig.json" } } - diff --git a/packages/shared/src/load-env.ts b/packages/shared/src/load-env.ts new file mode 100644 index 0000000..43e5a1f --- /dev/null +++ b/packages/shared/src/load-env.ts @@ -0,0 +1,9 @@ +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import dotenv from "dotenv"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(__dirname, "../../../"); + +// Workspace commands run from apps/*, so load the root-level .env explicitly. +dotenv.config({ path: path.join(repoRoot, ".env") });