NestJS CLI入门

一、安装与初始化

安装 CLI

bash 复制代码
npm install -g @nestjs/cli        # 全局安装
nest --version                    # 验证安装

也可用 npx @nestjs/cli@latest 免安装直接运行。

创建新项目

bash 复制代码
nest new my-project

选项说明:

  • --package-manager yarn|pnpm|npm:指定包管理器
  • --skip-git:跳过 git 初始化
  • --strict:开启 TypeScript 严格模式
  • --dry-run:仅预览,不实际创建

二、项目结构速览

创建后默认结构如下:

复制代码
my-project/
├── src/
│   ├── main.ts
│   ├── app.module.ts
│   ├── app.controller.ts
│   └── app.service.ts
├── test/
├── nest-cli.json
├── tsconfig.json
└── package.json

三、核心命令详解

1. nest new

创建新项目,已介绍。

2. nest generate(别名 g

用于生成模块、控制器、服务、实体等。

命令 作用 示例
nest g module user 创建模块 nest g mo user
nest g controller user 创建控制器 nest g co user
nest g service user 创建服务 nest g s user
nest g resource user 一键生成 CRUD 模块 nest g res user
nest g guard auth 创建守卫 nest g gu auth
nest g interceptor log 创建拦截器 nest g in log
nest g filter error 创建异常过滤器 nest g f error
nest g class dto/user 创建类(如 DTO/VO) nest g cl dto/create-user

所有命令支持路径,如 nest g mo modules/user

3. nest start

启动应用,支持以下参数:

参数 说明
--watch 热重载开发模式
--debug 启动调试模式
--exec ts-node-dev 自定义执行器
--preserveWatchOutput 保留控制台输出历史

4. nest build

构建用于生产的应用。

参数 说明
--webpack 使用 Webpack 构建
--swc 使用 SWC 构建(速度更快)
--pathTsConfig 指定 tsconfig.json 路径

四、配置文件详解:nest-cli.json

json 复制代码
{
  "$schema": "https://json.schemastore.org/nest-cli",
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "compilerOptions": {
    "builder": "swc",      // 可选:tsc/webpack/swc
    "typeCheck": true,
    "deleteOutDir": true
  },
  "monorepo": false,       // 是否启用 monorepo
  "projects": {}           // monorepo 子项目配置
}

五、Monorepo 模式(多项目管理)

Nest CLI 支持将多个应用和库组织在一个仓库中:

bash 复制代码
nest new workspace --directory=my-workspace --monorepo
cd my-workspace
nest generate app admin
nest generate lib shared

结构:

复制代码
my-workspace/
├── apps/
│   ├── admin/
│   └── api/
├── libs/
│   └── shared/
├── nest-cli.json
└── tsconfig.json

六、调试与测试

调试

bash 复制代码
nest start --debug --watch

VS Code 中可配置 .vscode/launch.json 进行断点调试。

测试

bash 复制代码
npm run test              # 单元测试
npm run test:e2e          # 端到端测试

CLI 会自动生成 .spec.ts 文件,支持 Jest。


七、自定义生成器(Schematics)

Nest CLI 基于 Angular Schematics,可自定义模板:

bash 复制代码
npm i -D @nestjs/schematics
nest g schematic my-schematic

八、CLI 插件与扩展

  • Swagger 集成nest add @nestjs/swagger
  • GraphQL 支持nest add @nestjs/graphql
  • 配置模块nest add @nestjs/config
  • Prismanest add prisma

九、实战建议(最佳实践)

场景 建议做法
模块组织 每个业务模块独立目录,使用 resource
路径别名 tsconfig.json 中配置 @/*: "src/*"
多环境配置 使用 @nestjs/config + .env 文件
热更新 + 调试 nest start --watch --debug
构建优化 使用 --swc 构建器
自动生成 DTO/Entity 配合 class-validator, class-transformer

十、常用命令速查表

功能 命令示例
创建项目 nest new app
生成模块 nest g mo user
生成控制器 nest g co user
生成服务 nest g s user
一键生成 CRUD nest g res user
启动开发服务器 nest start --watch
构建生产版本 nest build --swc
添加依赖 nest add @nestjs/swagger
运行测试 npm run test
生成库(monorepo) nest g lib shared
相关推荐
林太白2 天前
NestJS-聊天数据库
前端·后端·nestjs
林太白2 天前
NestJS-websockets和socket.io
前端·后端·nestjs
林太白2 天前
NestJS-群组模块
前端·javascript·nestjs
林太白2 天前
NestJS-聊天模块
前端·后端·nestjs
林太白2 天前
NestJS-反馈模块
前端·后端·nestjs
林太白2 天前
NestJS-申请模块
前端·后端·nestjs
林太白2 天前
NestJS-文章数据模块
前端·javascript·nestjs
林太白2 天前
NestJS-通告数据模块
前端·nestjs
HxY2 天前
Nest SSE 接口如何设置动态响应头
后端·nestjs