Study
NestJS

Config Module

Penjelasan

@nestjs/config membungkus dotenv dengan cara yang lebih "NestJS-way" — didaftarkan sebagai module (ConfigModule.forRoot()) di AppModule, lalu ConfigService di-inject ke Service/Controller mana pun yang butuh baca environment variable, alih-alih mengakses process.env langsung di banyak tempat.

Contoh Konsep

// npm install @nestjs/config
// app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';

@Module({
    imports: [
        ConfigModule.forRoot({ isGlobal: true }), // tersedia di semua module, tidak perlu import berulang
    ],
})
export class AppModule {}

// produk.service.ts
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class ProdukService {
    constructor(private configService: ConfigService) {}

    getApiKey() {
        return this.configService.get<string>('API_SECRET_KEY');
    }
}

Praktikum

Tulis contoh ConfigModule.forRoot({ isGlobal: true }) di AppModule. Buat MailService yang meng-inject ConfigService, method getMailHost() yang mengembalikan this.configService.get('MAIL_HOST').

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

isGlobal: true di ConfigModule.forRoot() membuat ConfigService bisa di-inject di MODULE MANA PUN tanpa perlu meng-import ConfigModule berulang-ulang di tiap module fitur — tanpa opsi ini, tiap module yang butuh ConfigService harus meng-import ConfigModule sendiri-sendiri.