env-parser.ts
- 주의사항: 이 파일이 위치한 경로에 따라
path.join(__dirname, "..", envFileName);
를 알맞게 변경
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();
}