env-parser.ts

import * as fs from 'fs';
import * as path from 'path';

function parseEnvFile(data: string): Record<string, string> {
  const envVariables: Record<string, string> = {};
  const lines = data.split('\\n');

  for (const line of lines) {
    const trimmedLine = line.trim();

    if (trimmedLine && !trimmedLine.startsWith('#')) {
      // 주석이 아닌 경우 파싱
      const [key, value] = trimmedLine.split('=');
      envVariables[key] = value;
    }
  }

  return envVariables;
}
 
/** .env 파일 내용 읽어오기 */
export function readEnvProps(envFileName: `${string}.env${string}`) {
    
    try {
        const envFilePath = path.join(__dirname, "..", envFileName);
        const fileContents = fs.readFileSync(envFilePath, {
            encoding: "utf-8"
        });
        return parseEnvFile(fileContents);
    } catch {
        return {};
    }
}

사용 예시

console.log(readEnvProps(".env.local"));

추가: camel → Big snake 유틸리티 함수

function camelToBigSnake(str: string) : string {
    str = str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
    return str.toUpperCase();
}