Command-line interface tool for initializing, developing, and maintaining NestJS applications
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Generate NestJS components, services, controllers, and other architectural elements using Angular DevKit schematics. The CLI provides built-in support for the @nestjs/schematics collection with comprehensive code generation capabilities.
Creates NestJS elements using schematics with extensive customization options.
# Generate elements
nest generate <schematic> [name] [path] [options]
nest g <schematic> [name] [path] [options]
# Options:
-d, --dry-run # Report actions without writing results
-p, --project [project] # Project in which to generate files
--flat # Enforce flat structure of generated element
--no-flat # Enforce that directories are generated
--spec # Enforce spec files generation (default: true)
--spec-file-suffix [suffix] # Use custom suffix for spec files
--skip-import # Skip importing (default: false)
--no-spec # Disable spec files generation
-c, --collection [collectionName] # Schematics collection to useUsage Examples:
# Generate a controller
nest generate controller users
nest g controller users
# Generate in specific path
nest g controller users --path=modules/users
# Generate without spec files
nest g controller users --no-spec
# Generate with flat structure
nest g service users --flat
# Generate in specific project (monorepo)
nest g controller users --project=api
# Dry run to preview changes
nest g controller users --dry-run
# Generate with custom collection
nest g controller users --collection=@my/schematicsThe @nestjs/schematics collection provides the following generators:
# Application
nest g application <name> # Generate a new application (for monorepos)
nest g app <name> # Alias for application
# Library
nest g library <name> # Generate a new library (for monorepos)
nest g lib <name> # Alias for library# Controller
nest g controller <name> # Generate a controller class
nest g co <name> # Alias for controller
# Service
nest g service <name> # Generate a service class
nest g s <name> # Alias for service
# Provider
nest g provider <name> # Generate a provider class
nest g pr <name> # Alias for provider# Module
nest g module <name> # Generate a module class
nest g mo <name> # Alias for module
# Resource (full CRUD)
nest g resource <name> # Generate complete CRUD resource
nest g res <name> # Alias for resource# Middleware
nest g middleware <name> # Generate middleware class
nest g mi <name> # Alias for middleware
# Guard
nest g guard <name> # Generate guard class
nest g gu <name> # Alias for guard
# Interceptor
nest g interceptor <name> # Generate interceptor class
nest g in <name> # Alias for interceptor
# Decorator
nest g decorator <name> # Generate decorator function
nest g d <name> # Alias for decorator
# Pipe
nest g pipe <name> # Generate pipe class
nest g pi <name> # Alias for pipe
# Filter
nest g filter <name> # Generate exception filter class
nest g f <name> # Alias for filter# Gateway (WebSockets)
nest g gateway <name> # Generate WebSocket gateway
nest g ga <name> # Alias for gateway
# Resolver (GraphQL)
nest g resolver <name> # Generate GraphQL resolver
nest g r <name> # Alias for resolver# Class
nest g class <name> # Generate a basic class
nest g cl <name> # Alias for class
# Interface
nest g interface <name> # Generate an interface
nest g interface <name> # No alias availableBy default, the CLI generates test specification files alongside components:
# Generates both controller and spec file:
nest g controller users
# Creates:
# - users.controller.ts
# - users.controller.spec.tsThe CLI automatically handles imports and module registration:
# When generating a controller, it:
# 1. Creates the controller file
# 2. Updates the parent module to import the controller
# 3. Adds the controller to the module's controllers array# Flat structure (--flat)
src/
├── users.controller.ts
└── users.controller.spec.ts
# Nested structure (default)
src/
└── users/
├── users.controller.ts
└── users.controller.spec.tsFor monorepo projects, specify the target project:
# Generate in specific app/library
nest g controller users --project=api-gateway
nest g service users --project=shared-libControl exactly where files are generated:
# Generate in custom path
nest g controller users --path=src/modules/authentication
nest g service email --path=src/common/servicesCustomize the suffix used for spec files:
# Use custom spec file suffix
nest g controller users --spec-file-suffix=test
# Creates: users.controller.test.ts instead of users.controller.spec.tsPrevent automatic module registration:
# Generate without adding to module
nest g controller users --skip-importThe resource schematic generates a complete CRUD setup:
# Generate complete resource
nest g resource users
# Creates:
# - users.controller.ts
# - users.controller.spec.ts
# - users.service.ts
# - users.service.spec.ts
# - users.module.ts
# - dto/create-user.dto.ts
# - dto/update-user.dto.ts
# - entities/user.entity.tsThe CLI validates schematic names and provides helpful error messages:
# Invalid schematic name
nest g invalid-schematic users
# Lists available schematics in a formatted table