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
importit — CommonJSrequire()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