CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-nestjs--cli

Command-line interface tool for initializing, developing, and maintaining NestJS applications

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

code-generation.mddocs/

Code Generation

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.

Capabilities

Generate Command

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 use

Usage 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/schematics

Available Schematics

The @nestjs/schematics collection provides the following generators:

Core Elements

# 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

Controllers and Services

# 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

Modules and Structure

# 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

Advanced Elements

# 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

Gateways and Resolvers

# 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

Configuration Files

# 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 available

File Generation Patterns

Spec Files

By 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.ts

Import Handling

The 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

Directory Structure

# Flat structure (--flat)
src/
├── users.controller.ts
└── users.controller.spec.ts

# Nested structure (default)  
src/
└── users/
    ├── users.controller.ts
    └── users.controller.spec.ts

Project Structure Options

Monorepo Support

For monorepo projects, specify the target project:

# Generate in specific app/library
nest g controller users --project=api-gateway
nest g service users --project=shared-lib

Path Specification

Control exactly where files are generated:

# Generate in custom path
nest g controller users --path=src/modules/authentication
nest g service email --path=src/common/services

Advanced Options

Custom File Suffixes

Customize 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.ts

Skip Import Registration

Prevent automatic module registration:

# Generate without adding to module
nest g controller users --skip-import

Resource Generation

The 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.ts

Error Handling

The CLI validates schematic names and provides helpful error messages:

# Invalid schematic name
nest g invalid-schematic users
# Lists available schematics in a formatted table

docs

application-building.md

code-generation.md

development-server.md

index.md

library-integration.md

project-creation.md

project-information.md

tile.json