사용 방법
- 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
- 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
- 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/j4flmao/agent_skills_nodejs_nestjs --skill architecting-nestjs-modules시작 전 확인
- 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
- 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.
Architecting NestJS Modules
When to use
- Adding a new feature module
- Splitting a monolithic
AppModule - Fixing tangled imports between modules
Core rules
- Feature modules own their domain, application, infrastructure layers
- Providers default to
Scope.DEFAULT(singleton), useScope.REQUESTonly when needed - Export only what other modules need (don't export everything)
- Dynamic modules for configurable features (database, cache)
- No cross-feature imports; use shared contracts
Reference shape (TypeScript)
Feature Module
@Module({
controllers: [UserController],
providers: [
CreateUserUseCase,
{ provide: 'UserRepository', useClass: TypeOrmUserRepository },
],
exports: [CreateUserUseCase],
})
export class UserModule {}Dynamic Module Example
@Module({})
export class DatabaseModule {
static register(config: DatabaseConfig): DynamicModule {
return {
module: DatabaseModule,
providers: [
{ provide: 'DATABASE_CONFIG', useValue: config },
{ provide: DataSource, useFactory: () => new DataSource(config).initialize() },
],
exports: [DataSource],
};
}
}Examples — Do
// Clean module boundary
@Module({ controllers: [OrderController], providers: [OrderService], exports: [OrderService] })
export class OrderModule {}Examples — Don't
// ❌ Monolithic AppModule
@Module({ controllers: [UserController, OrderController, ProductController], providers: [...] })
export class AppModule {}Checklist
- [ ] Feature modules with own layers
- [ ] Providers with appropriate scopes
- [ ] Only necessary exports
- [ ] No cross-feature imports
See reference/module-patterns.md for full patterns.




