본문 바로가기
NodeJS/NestJS

[NestJS] ".env" 대신 ".yaml" 환경변수 구성하기

by 검은냥냥이 2023. 8. 11.

설정 파일 만들기

저는 `src/utils/config` 위치에 `configuration.yaml.ts` 파일 이름으로 생성했습니다.

src/utils/config 폴더

const YAML_CONFIG_PRODUCTION = 'production.yaml';
const YAML_CONFIG_DEVELOPMENT = 'development.yaml';

export default function ConfigurationYaml(): Record<string, any> {
  const config = jsyaml.load(
    process.env.NODE_ENV === 'production'
      ? readFileSync(join(__dirname, YAML_CONFIG_PRODUCTION), 'utf8')
      : readFileSync(join(__dirname, YAML_CONFIG_DEVELOPMENT), 'utf8'),
  ) as Record<string, any>;

  return config;
}

 

전역 모듈 선언

`app.module.ts`

추가로 글로벌 설정을 했습니다.

@Global()
@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      load: [ConfigurationYaml],
      envFilePath: [
        '.env.development',
        '.env.production',
        'development.yaml',
        'production.yaml',
      ],
    }),
  ],
})
export class AppModule {}

 

자동 내보내기 설정

`nest-cli.json`

{
  "$schema": "https://json.schemastore.org/nest-cli",
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "compilerOptions": {
    "deleteOutDir": true,
    "assets": [
      {
        "include": "./utils/config/*.yaml",
        "outDir": "./dist"
      },
      {
        "include": "./utils/config/*.env",
        "outDir": "./dist"
      }
    ]
  }
}

 

파일 위치 관련 `throw new Error('cant go up that far')` 오류

파일 복사 오류

보통 `.env` 파일의 경우 최상위 디렉터리의 위치에 많이 있습니다. 그렇다 보니 `.yaml` 파일도 최상위 디렉터리에 놓게 되면 위 이미지와 같은 `throw new Error('cant go up that far')` 오류가 발생합니다. 그렇기 때문에 `NestJS`에서는 `src` 하위에 `.yaml` 파일이 있어야 합니다.

물론, 다른 방법도 있습니다. `package.json`에서 `cpx`를 통해서 파일을 복사할 수도 있습니다.

728x90
사업자 정보 표시
레플라 | 홍대기 | 경기도 부천시 부일로 519 화신오피스텔 1404호 | 사업자 등록번호 : 726-04-01977 | TEL : 070-8800-6071 | Mail : support@reafla.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기