NestJSIntermediate
NestJS Configuration
@nestjs/config, .env, environment validation, typed config — বাংলায়।
13টি অংশবাংলা ভাষায়
Configuration server-এর setting manage করা — port, db url, secrets ইত্যাদি। официальный @nestjs/config ব্যবহার করাই সেরা।
Setup
npm i @nestjs/config joi.envenv
env
PORT=3000
MONGO_URI=mongodb://localhost:27017/nestapp
JWT_SECRET=my_secret
NODE_ENV=developmentapp.module.tstypescript
typescript
import { Module } from "@nestjs/common";
import { ConfigModule } from "@nestjs/config";
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true, // সব module-এ accessible
envFilePath: [".env.development", ".env"],
}),
],
})
export class AppModule {}ConfigService Inject
import { Injectable } from "@nestjs/common";
import { ConfigService } from "@nestjs/config";
@Injectable()
export class DatabaseService {
constructor(private configService: ConfigService) {}
getConfig() {
return {
port: this.configService.get<number>("PORT", 3000), // default
dbUrl: this.configService.get<string>("MONGO_URI"),
env: this.configService.get("NODE_ENV"),
};
}
}Typed Configuration
src/config/configuration.tstypescript
typescript
export interface AppConfig {
port: number;
database: { uri: string };
jwt: { secret: string; expiresIn: number };
}
export default (): AppConfig => ({
port: parseInt(process.env.PORT ?? "3000", 10),
database: {
uri: process.env.MONGO_URI ?? "mongodb://localhost:27017/nestapp",
},
jwt: {
secret: process.env.JWT_SECRET ?? "",
expiresIn: parseInt(process.env.JWT_EXPIRES ?? "3600", 10),
},
});ConfigModule.forRoot({
load: [configuration], // typed config
isGlobal: true,
})Environment Validation (Joi)
import * as Joi from "joi";
ConfigModule.forRoot({
validationSchema: Joi.object({
PORT: Joi.number().default(3000),
MONGO_URI: Joi.string().required(),
JWT_SECRET: Joi.string().required(),
NODE_ENV: Joi.string()
.valid("development", "production", "test")
.default("development"),
}),
validationOptions: {
allowUnknown: true, // অন্য keys বাদ যাবে না
abortEarly: false,
},
})বিখ্যাত অভ্যাস
.env git-এ commit করবেন না — .env.example রাখুন। Joi validation দিয়ে launch-এই ভুল env ধরা পড়ে।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।