ID: I202512171432
Status: idea
Tags: NestJS, CLI

NestJS CLI

NestJS has a CLI for generating code. Here’s a comprehensive reference of all available commands.

Root

The generated code will be placed in your repo based on the "sourceRoot": "src" in your nest-cli.json

Core Generation Commands

Syntax:

nest generate <schematic> <name>
nest g <schematic> <name>

Project Structure

Generate Module:

nest g mo <name>
nest generate module <name>

Generate Controller:

nest g co <name>
nest generate controller <name>

Generate Service:

nest g s <name>
nest generate service <name>

Generate Resource (Complete CRUD):

nest g res <name>
nest generate resource <name>

Generates: module + controller + service + entity + DTOs + tests

Core NestJS Building Blocks

Generate Class:

nest g cl <name>
nest generate class <name>

Generate Interface:

nest g itf <name>
nest generate interface <name>

Generate Provider:

nest g pr <name>
nest generate provider <name>

Middleware & Pipes

Generate Filter:

nest g f <name>
nest generate filter <name>

Generate Guard:

nest g gu <name>
nest generate guard <name>

Generate Pipe:

nest g pi <name>
nest generate pipe <name>

Generate Interceptor:

nest g itc <name>
nest generate interceptor <name>

Generate Middleware:

nest g mi <name>
nest generate middleware <name>

Advanced Features

Generate Decorator:

nest g d <name>
nest generate decorator <name>

Generate Gateway (WebSocket):

nest g ga <name>
nest generate gateway <name>

Generate Resolver (GraphQL):

nest g r <name>
nest generate resolver <name>

Monorepo Features

Generate Application (in monorepo):

nest g app <name>

Generate Library (in monorepo):

nest g lib <name>
nest generate library <name>

Common Options

Add these flags to any generation command:

# Skip test file generation
nest g s users --no-spec
 
# Skip folder creation (flat structure)
nest g mo users --flat
 
# For specific project (monorepo)
nest g s users --project my-project
 
# Dry run (see what would be generated)
nest g co users --dry-run

Project-Level Commands

Create New Project:

nest new <project-name>
nest n <project-name>

Build Project:

nest build
nest b

Start Project:

nest start
nest start --watch

Display Project Info:

nest info

Real-World Examples

Complete feature generation with nesting:

nest g mo features/users
nest g co features/users
nest g s features/users
nest g cl features/users/dto/create-user.dto

Generate GraphQL resource:

nest g res users
# Select: GraphQL (code first) or GraphQL (schema first)
# Select: Yes for CRUD entry points

Generate WebSocket gateway:

nest g ga events

Guard + Interceptor for authentication:

nest g gu auth/jwt
nest g itc auth/logging

Tips

  • The CLI automatically updates module imports when generating controllers/services
  • Use nest generate resource for interactive CRUD setup with prompts
  • Combine --flat with nested paths: nest g mo features/users --flat
  • All schematics support --no-spec to skip test generation
  • Use --dry-run to preview changes before committing them
  • For monorepos, use --project to specify the target project

References

I kept forgetting NestJS CLI commands whilst working on Avans 2-1 LU3