Skip to main content

@hodfords/nestjs-command

Hodfords Logo

nestjs-command simplifies creating and managing CLI commands in NestJS applications. It offers an easy way to define and execute commands, streamlining CLI integration and boosting productivity with minimal configuration.

Requirements πŸ“‹β€‹

  • This package is ESM-only. Your project must be able to import it β€” CommonJS require() of it is not supported.
  • Node.js >= 20.19.0 (or >= 22.12, >= 24.15, >= 26).
  • NestJS 12.
@hodfords/nestjs-commandNestJS
12.x12.x
11.x11.x

Installation πŸ€–β€‹

Install the nestjs-command package with:

npm install @hodfords/nestjs-command --save

Set up in your codebase:

  • src/config/command.config.ts
import { CommandModule } from '@hodfords/nestjs-command';

export const commandConfig = CommandModule.register();

// export const = CommandModule.register(false) if typeorm is disabled
  • src/app.module.ts
import { Module } from '@nestjs/common';
import { commandConfig } from '~config/command.config';

@Module({
imports: [commandConfig],
controllers: [],
providers: []
})
export class AppModule {}
  • src/cli.ts
import { NestFactory } from '@nestjs/core';
import { CommandService } from '@hodfords/nestjs-command';
import { commandConfig } from '~config/command.config';

async function bootstrap() {
const app = await NestFactory.createApplicationContext(AppModule);
const commandService: CommandService = app.select(commandConfig).get(CommandService, { strict: true });
await commandService.exec();
await app.close();
}

bootstrap();
  • package.json
"wz-command": "wz-command"

The entry file is resolved from CLI_PATH (default ./src/cli.ts), relative to the directory you run the command from. When the entry is a TypeScript file, install ts-node (or tsx) in your application: it is registered as an ESM loader for projects with "type": "module", and through ts-node/register plus tsconfig-paths for CommonJS projects.

Usage πŸš€β€‹

Here’s how you can use them. For each type of component, you can use one of the two available command formats: with npm run or directly with wz-command

Make a command​

npm run wz-command make-command <file-name> -- --module <module-name>
wz-command make-command <file-name> --module <module-name>

Make a controller​

npm run wz-command make-controller <file-name> -- --module <module-name>
wz-command make-controller <file-name> --module <module-name>

Make a dto​

npm run wz-command make-dto <file-name> -- --module <module-name>
wz-command make-dto <file-name> --module <module-name>

Make an e2e test​

npm run wz-command make-e2e-test <file-name> -- --module <module-name>
wz-command make-e2e-test <file-name> --module <module-name>

Make an entity​

npm run wz-command make-entity <file-name> -- --module <module-name>
wz-command make-entity <file-name> --module <module-name>

Make a migration​

Create table​

npm run wz-command make-migration <file-name> -- --module <module-name> --create=<entity-name>
wz-command make-migration <file-name> --module <module-name> --create=<entity-name>

Update table​

npm run wz-command make-migration <file-name> -- --module <module-name> --update=<entity-name>
wz-command make-migration <file-name> --module <module-name> --update=<entity-name>

Make a module​

npm run wz-command make-module <module-name>
wz-command make-module <file-name>

Make a repository​

npm run wz-command make-repository <file-name> -- --module <module-name>
wz-command make-repository <file-name> --module <module-name>

Make a service​

npm run wz-command make-service <file-name> -- --module <module-name>
wz-command make-service <file-name> --module <module-name>

List all scheduled cron jobs​

npm run wz-command list-cron-jobs
wz-command list-cron-jobs

Run specific cron jobs​

npm run wz-command run-cron-jobs -- --jobs <jobName>
wz-command run-cron-jobs --jobs <jobName>

License πŸ“β€‹

This project is licensed under the MIT License