Adding first working version
This commit is contained in:
Vendored
+44
@@ -0,0 +1,44 @@
|
||||
import { existsSync, readFileSync } from 'node:fs';
|
||||
import { dirname, resolve } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
function parseEnvLine(line) {
|
||||
const trimmed = line.trim();
|
||||
if (!trimmed || trimmed.startsWith('#'))
|
||||
return null;
|
||||
const equalsIndex = trimmed.indexOf('=');
|
||||
if (equalsIndex === -1)
|
||||
return null;
|
||||
const key = trimmed.slice(0, equalsIndex).trim();
|
||||
let value = trimmed.slice(equalsIndex + 1).trim();
|
||||
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
|
||||
return null;
|
||||
if ((value.startsWith('"') && value.endsWith('"')) ||
|
||||
(value.startsWith("'") && value.endsWith("'"))) {
|
||||
value = value.slice(1, -1);
|
||||
}
|
||||
return { key, value };
|
||||
}
|
||||
function loadEnvFile(path) {
|
||||
if (!existsSync(path))
|
||||
return;
|
||||
const content = readFileSync(path, 'utf8');
|
||||
for (const line of content.split(/\r?\n/)) {
|
||||
const parsed = parseEnvLine(line);
|
||||
if (!parsed || process.env[parsed.key] !== undefined)
|
||||
continue;
|
||||
process.env[parsed.key] = parsed.value;
|
||||
}
|
||||
}
|
||||
export function loadEnv() {
|
||||
const moduleDir = dirname(fileURLToPath(import.meta.url));
|
||||
const candidatePaths = [
|
||||
resolve(process.cwd(), '.env'),
|
||||
resolve(process.cwd(), '..', '.env'),
|
||||
resolve(moduleDir, '..', '.env'),
|
||||
resolve(moduleDir, '..', '..', '.env')
|
||||
];
|
||||
for (const path of [...new Set(candidatePaths)]) {
|
||||
loadEnvFile(path);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=loadEnv.js.map
|
||||
Reference in New Issue
Block a user