Nguồn tham khảo: https://docs.nestjs.com/recipes/nest-commander

nest-commander-final.svg

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.

Tính năng

  1. 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.

  2. 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.

  3. 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.

Cách sử dụng

1. Installation

npm i nest-commander

2. Khai báo application command

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();

3. Khai báo module command

1 command được khai bao là SodaCommand

import { Module } from '@nestjs/common';

@Module({
  imports: [],
  providers: [SodaCommand],
  exports: [],
})
export class SodaModule {}

4. Khai báo command

Đây là file định nghĩa command chính, tên command, các tham số, xử lý logic