마지막 수정일: 2025-02-09
https://github.com/SJ0826/nestjs-auth/commit/782c45b686338796c4bdefdcc90ddc4009428814
{
"$schema": "<https://json.schemastore.org/nest-cli>",
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"deleteOutDir": true,
"assets": [
{
"include": "./config/env/*.env",
"outDir": "./dist"
}
]
}
}
@Module({
imports: [
UsersModule,
EmailModule,
ConfigModule.forRoot({
envFilePath: [`${__dirname}/config/env/.${process.env.NODE_ENV}.env`],
load: [emailConfig],
isGlobal: true, // 전역모듈로 설정
validationSchema, // joi를 이용해 유효성검사
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
envFilePath: 현재 실행 환경에 따라 환경 변수 파일을 동적으로 로드
load
// email.config.ts
export default registerAs('email', () => ({
service: process.env.EMAIL_SERVICE,
auth: {
user: process.env.EMAIL_AUTH_USER,
pass: process.env.EMAIL_AUTH_PASSWORD,
},
baseUrl: process.env.EMAIL_BASE_URL,
}));
@Injectable()
export class EmailService {
private transporter: Mail;
constructor(
@Inject(emailConfig.KEY) private config: ConfigType<typeof emailConfig>,
) {
this.transporter = nodemailer.createTransport({
// nodemailer에서 제공하는 Transporter 객체 생성
service: config.service,
auth: {
user: config.auth.user,
pass: config.auth.pass,
},
});
}
...