npm.io
12.3.1 • Published 19h agoCLI

@hodfords/nestjs-command

Licence
ISC
Version
12.3.1
Deps
2
Size
83 kB
Vulns
0
Weekly
0
Stars
46

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-command NestJS
12.x 12.x
11.x 11.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, tsx or @swc-node/register 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