NestJS CLI 与常用命令
介绍 NestJS CLI 的安装方式,以及 new、start、build、generate 等日常开发中最常用的命令与选项。
NestJS CLI 是开发 NestJS 应用的核心命令行工具,用于快速创建项目、生成代码、构建和运行应用。掌握 CLI 能显著减少样板代码,提升开发效率。
📦 安装
推荐全局安装,方便在终端中直接使用 nest 命令:
npm install -g @nestjs/cli
如果不希望全局安装,也可以使用 npx 临时运行:
npx @nestjs/cli@latest <command>
安装完成后,可通过以下命令验证:
nest --version
⌨️ 命令格式
所有 nest 命令都遵循统一格式:
nest <commandOrAlias> [requiredArg] [optionalArg] [options]
随时可以通过 nest --help 查看所有命令,或通过 nest <command> --help 查看特定命令的详细选项和别名。
1. 创建新项目:new(别名 n)
用于创建一个全新的 NestJS 项目,并自动生成标准目录结构和基础文件。
nest new my-nest-project
常用选项:
| 选项 | 说明 |
|---|---|
--directory | 指定项目目录名 |
--dry-run / -d | 预览操作,不实际创建文件 |
--skip-git / -g | 跳过初始化 Git 仓库 |
--skip-install | 跳过自动安装依赖 |
--package-manager / -p | 指定包管理器(npm / yarn / pnpm) |
--language | 指定语言(typescript 或 javascript),默认 TypeScript |
--strict | 启用 TypeScript 严格模式 |
2. 开发与运行:start
编译并运行应用程序,是开发阶段最常用的命令。
nest start
常用选项:
| 选项 | 说明 |
|---|---|
--watch | 热重载模式,监听文件变化并自动重启 |
--debug | 以调试模式启动 |
--watchAssets | 热重载时同时监听静态资源变化 |
--exec | 指定运行编译产物的命令(如 node) |
开发时通常配合 package.json 中的脚本使用:
{ "scripts": { "start:dev": "nest start --watch" } }
3. 构建打包:build
将应用编译到输出目录(默认为 dist),用于生产环境部署。
nest build
常用选项:
| 选项 | 说明 |
|---|---|
--webpack | 使用 Webpack 编译 |
--tsc | 使用 TypeScript 编译器(默认) |
--watch | 监听文件变动,自动重新构建 |
--path / -p | 指定 tsconfig 路径 |
4. 生成代码:generate(别名 g)
最常用的命令之一,基于原理图(schematic)自动生成模块、控制器、服务等组件,减少重复编码。
nest generate <schematic> <name> [path]
常用的 schematic 类型:
| 类型 | 别名 | 说明 |
|---|---|---|
module | mo | 生成模块 |
controller | co | 生成控制器 |
service | s | 生成服务(Provider) |
resource | res | 生成完整 REST API 或 GraphQL 资源 |
guard | gu | 生成守卫 |
interceptor | itc | 生成拦截器 |
filter | f | 生成异常过滤器 |
middleware | mi | 生成中间件 |
pipe | pi | 生成管道 |
decorator | d | 生成自定义装饰器 |
resolver | r | 生成 GraphQL Resolver |
常用选项:
| 选项 | 说明 |
|---|---|
--no-spec | 不生成测试文件(*.spec.ts) |
--flat | 不创建专属目录,文件直接放在当前路径 |
--dry-run / -d | 预览操作,不实际创建文件 |
--skip-import | 不在根模块中自动导入 |
示例:
# 生成 user 模块 nest g module user # 生成 user 控制器(自动注册到 user 模块) nest g controller user # 生成 user 服务 nest g service user # 一键生成完整 REST API 资源(推荐) nest g resource user
执行 nest g resource user 时,CLI 会交互式询问 REST API 还是 GraphQL、是否生成 CRUD 入口等,适合快速搭建业务模块。
5. 其他辅助命令
| 命令 | 别名 | 说明 |
|---|---|---|
add | — | 导入已打包为 Nest 库的第三方库,并运行其安装原理图 |
info | i | 显示系统信息、NestJS 包版本等 |
update | — | 更新 @nestjs/* 依赖到最新兼容版本 |
查看项目依赖版本:
nest info
💡 实用技巧
Monorepo 支持:NestJS CLI 支持 monorepo 模式,可在同一仓库中管理多个应用和共享库。使用 nest generate app <name> 可在工作区中新增子应用。
加速构建:默认使用 tsc 编译,大型项目可考虑 SWC 构建器 替代,构建速度更快。
预览再执行:对 new、generate 等会修改文件系统的命令,建议先用 --dry-run 预览,确认生成路径和内容无误后再正式执行。
与 npm scripts 配合:实际项目中,CLI 命令通常封装在 package.json 的 scripts 里,例如:
{ "scripts": { "build": "nest build", "start": "nest start", "start:dev": "nest start --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main" } }
日常开发只需 npm run start:dev,无需每次手动输入完整 CLI 参数。