Console Commands
We use NestJS Console to create console commands. Console commands can be used locally or deployed.
Defining Commands
Demo console command
import { CreateRequestContext, MikroORM } from "@mikro-orm/core";
import { Injectable, Logger } from "@nestjs/common";
import { Command, Console } from "nestjs-console";
@Injectable()
@Console()
export class DemoConsole {
private readonly logger = new Logger(DemoConsole.name);
constructor(
private readonly orm: MikroORM, // MikroORM is injected so we can use the request context
) {}
@Command({
command: "demo-command",
description: "Demo-Command for cronjob-deployment",
})
@CreateRequestContext()
async demoCommand(): Promise<void> {
this.logger.log("Execute demo-command.");
}
}
Listing all available commands
Locally
npm run console
Deployed
npm run console:prod
Running commands
Locally
npm run console demo-command
Deployed
npm run console:prod demo-command
Best practices
- Dangerous commands (e.g. resetting the database) should check the
NODE_ENV
and only run locally.
async execute(): Promise<void> {
if (process.env.NODE_ENV !== "development") {
this.logger.error("Not allowed in production environments");
process.exit(1);
}
// ...
}