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 | 查看项目环境信息 | 排查环境问题有用 |
总结
- NestJS CLI 核心命令围绕「项目创建(nest new)、文件生成(nest g)、运行构建(nest start/build)」三大核心场景,简写形式(如 nest g m)能大幅提升效率;
- 生成文件时优先创建模块,再在模块内生成控制器/服务,符合 Nest 的模块化设计思想;
- 开发环境用
nest start -w热重载运行,生产环境用nest build --minify构建压缩包,是最常用的开发/部署组合。
所有命令均经过实测,可直接复制使用,新手建议先从「创建项目 → 生成模块 → 生成控制器/服务 → 热重载运行」的流程上手,逐步熟悉高级用法。