NestJS 命令行(CLI)最全用法指南

5 阅读5分钟

NestJS CLI 是开发 Nest 项目的核心工具,掌握其命令能大幅提升开发效率。本文将以「通俗易懂、简单明了」为原则,梳理 NestJS CLI 所有常用命令及场景化用法,所有代码块均可直接复制使用。

一、基础准备:安装 NestJS CLI

1. 全局安装(推荐)

# npm 安装
npm install -g @nestjs/cli

# yarn 安装
yarn global add @nestjs/cli

# pnpm 安装
pnpm add -g @nestjs/cli

2. 验证安装成功

nest --version
# 输出示例:10.3.2(显示版本号即安装成功)

二、核心命令:项目初始化

1. 创建新项目

# 基础创建(默认 npm 包管理器)
nest new <项目名>
# 示例:nest new nest-demo

# 指定包管理器创建(推荐,避免 npm/yarn 冲突)
nest new <项目名> --package-manager yarn
nest new <项目名> --package-manager pnpm
nest new <项目名> --package-manager npm

2. 创建 monorepo 项目(多模块仓库)

# 初始化 monorepo 项目
nest new <项目名> --monorepo
# 示例:nest new nest-monorepo --monorepo

三、高频命令:生成项目文件

NestJS 提供 nest generate(简写 nest g)命令快速生成控制器、服务、模块等核心文件,语法:

nest g <类型> <名称> [路径]
# 类型:controller (c)、service (s)、module (m) 等(括号内为简写)
# 名称:文件名称(驼峰/下划线均可,CLI 自动标准化)
# 路径:可选,指定生成位置(相对于 src 目录)

1. 生成模块(Module)

模块是 Nest 的核心组织单元,建议先建模块,再在模块内建控制器/服务

# 基础用法(生成 src/user/user.module.ts)
nest g module user
# 简写
nest g m user

# 指定路径生成(生成 src/admin/user/user.module.ts)
nest g m admin/user

2. 生成控制器(Controller)

处理 HTTP 请求/路由,自动关联到对应模块

# 基础用法(生成 src/user/user.controller.ts + 自动导入到 UserModule)
nest g controller user
# 简写
nest g c user

# 生成带路由前缀的控制器(推荐,自动添加 @Controller('user'))
nest g c user --prefix user

# 仅生成控制器文件,不自动导入到模块(慎用)
nest g c user --no-spec

3. 生成服务(Service)

处理业务逻辑,自动关联到对应模块

# 基础用法(生成 src/user/user.service.ts + 自动导入到 UserModule)
nest g service user
# 简写
nest g s user

# 不生成测试文件(减少冗余)
nest g s user --no-spec

4. 生成完整 CRUD 接口(一键生成)

快速生成包含「模块+控制器+服务」的 CRUD 模板,适合快速开发

# 生成 user 相关的 CRUD 代码
nest g resource user
# 执行后会提示选择通信方式:
# 1. REST API(最常用,推荐)
# 2. GraphQL (code first)
# 3. GraphQL (schema first)
# 4. Microservice (non-HTTP)
# 5. WebSockets
# 选择后自动生成完整 CRUD 结构

5. 其他常用文件生成

命令作用简写
nest g guard auth生成守卫(权限控制)nest g gu auth
nest g interceptor transform生成拦截器(请求/响应转换)nest g in transform
nest g filter http-exception生成过滤器(异常处理)nest g f http-exception
nest g pipe validation生成管道(参数校验)nest g pi validation
nest g decorator custom生成自定义装饰器nest g d custom
nest g middleware logger生成中间件(请求日志)nest g mi logger

四、项目运行与构建

1. 开发环境运行

# 基础运行(监听文件变化,自动重启)
nest start

# 热重载运行(推荐,开发必备)
nest start --watch
# 简写
nest start -w

2. 生产环境构建与运行

# 构建生产包(输出到 dist 目录)
nest build

# 构建时指定环境(读取 .env.prod 配置)
nest build --env-file .env.prod

# 运行生产包
node dist/main.js

3. 构建参数说明

# 指定构建目录
nest build --output dist/custom

# 开启源映射(方便生产环境调试)
nest build --source-map

# 压缩构建产物(减小体积)
nest build --minify

五、辅助命令:项目检查与维护

1. 检查项目依赖与配置

# 检查 Nest 项目状态(版本、依赖等)
nest info

# 输出示例:
# Nest CLI Version: 10.3.2
# Node Version: v18.17.1
# OS: darwin x64
# ...

2. 更新 NestJS 依赖

# 升级项目内 Nest 相关依赖到最新版本
nest update
# 指定版本升级
nest update @nestjs/core@10.0.0

3. 格式化代码

# 按 Nest 规范格式化项目代码
nest format

六、高级命令:自定义配置

1. 查看 CLI 配置

# 查看当前 Nest CLI 配置
nest config

# 生成 CLI 配置文件(nest-cli.json)
nest config init

2. 自定义生成模板

如果需要修改 CLI 生成文件的模板(比如统一代码风格),可通过以下命令导出模板:

# 导出默认模板到本地 templates 目录
nest g template --export
# 修改模板后,运行生成命令时指定自定义模板
nest g controller user --template ./templates

七、常用命令速查表

命令核心作用备注
nest new demo创建普通项目可指定包管理器
nest new demo --monorepo创建 monorepo 项目多模块项目推荐
nest g m user生成 user 模块先建模块再建其他文件
nest g c user -w生成 user 控制器(热重载)自动关联模块
nest g s user --no-spec生成 user 服务(无测试文件)减少冗余文件
nest g resource user一键生成 CRUD 代码快速开发首选
nest start -w热重载运行项目开发环境必备
nest build --minify构建压缩后的生产包生产环境使用
nest info查看项目环境信息排查环境问题有用

总结

  1. NestJS CLI 核心命令围绕「项目创建(nest new)、文件生成(nest g)、运行构建(nest start/build)」三大核心场景,简写形式(如 nest g m)能大幅提升效率;
  2. 生成文件时优先创建模块,再在模块内生成控制器/服务,符合 Nest 的模块化设计思想;
  3. 开发环境用 nest start -w 热重载运行,生产环境用 nest build --minify 构建压缩包,是最常用的开发/部署组合。

所有命令均经过实测,可直接复制使用,新手建议先从「创建项目 → 生成模块 → 生成控制器/服务 → 热重载运行」的流程上手,逐步熟悉高级用法。