What is @golevelup/nestjs-modules?
@golevelup/nestjs-modules is a collection of utility modules for the NestJS framework. It provides various functionalities to enhance the development experience with NestJS, including features for event-driven architecture, file uploads, and more.
What are @golevelup/nestjs-modules's main functionalities?
Event-Driven Architecture
This feature allows you to implement an event-driven architecture in your NestJS application. The EventEmitterModule provides a way to emit and listen to events across your application.
const { Module } = require('@nestjs/common');
const { EventEmitterModule } = require('@golevelup/nestjs-modules');
@Module({
imports: [
EventEmitterModule.forRoot(),
],
})
class AppModule {}
// In a service
const { Injectable } = require('@nestjs/common');
const { EventEmitter2 } = require('@golevelup/nestjs-modules');
@Injectable()
class MyService {
constructor(private eventEmitter: EventEmitter2) {}
triggerEvent() {
this.eventEmitter.emit('event.name', { data: 'payload' });
}
}
File Uploads
This feature simplifies file uploads in your NestJS application. The FileUploadModule provides configuration options for different storage strategies, and the FileInterceptor helps handle file uploads in your controllers.
const { Module } = require('@nestjs/common');
const { FileUploadModule } = require('@golevelup/nestjs-modules');
@Module({
imports: [
FileUploadModule.forRoot({
storage: 'local',
dest: './uploads',
}),
],
})
class AppModule {}
// In a controller
const { Controller, Post, UploadedFile, UseInterceptors } = require('@nestjs/common');
const { FileInterceptor } = require('@golevelup/nestjs-modules');
@Controller('upload')
class UploadController {
@Post()
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile() file) {
console.log(file);
}
}
Other packages similar to @golevelup/nestjs-modules
nestjs-multer
nestjs-multer is a package that integrates the Multer middleware for handling multipart/form-data, which is primarily used for uploading files. It is similar to the FileUploadModule in @golevelup/nestjs-modules but focuses specifically on file uploads.