Nguồn tham khảo: https://docs.nestjs.com/recipes/nest-commander
Tác dụng: Xây dựng các dòng lệnh (CLI) có cấu trúc, dễ bảo trì trong dự án NestJs, tổ chức các lệnh có hệ thống để dễ dàng sử dụng.
Cấu trúc module
Tổ chức các lệnh CLI theo module, tương tự như cách NestJS tổ chức các module. Điều này giúp các lệnh dễ bảo trì, dễ mở rộng khi cần thiết.
Hỗ trợ Argument và Option
Cung cấp các decorators và công cụ để xác định các arguments (tham số) và options (tuỳ chọn) cho từng lệnh. Điều này giúp cho việc xử lý dữ liệu nhập vào từ CLI trở nên trực quan và dễ hiểu hơn.
Tích hợp Dependency Injection (DI)
Kế thừa sức mạnh của hệ thống Dependency Injection của NestJS, cho phép sử dụng các service, module hay bất kỳ thành phần nào khác trong các lệnh CLI một cách dễ dàng. Bản thân command cũng chính là 1 DI.
npm i nest-commander
File: commander.ts (ngang hàng với file main.ts). Khác với file main.ts dùng NestFactory
để khởi tạo 1 webserver, thì commander dùng CommandFactory
import { CommandFactory } from 'nest-commander';
import { AppModule } from './app.module';
async function bootstrap() {
await CommandFactory.run(AppModule);
}
bootstrap();
1 command được khai bao là SodaCommand
import { Module } from '@nestjs/common';
@Module({
imports: [],
providers: [SodaCommand],
exports: [],
})
export class SodaModule {}
Đây là file định nghĩa command chính, tên command, các tham số, xử lý logic