NestJS CLI入门
一、安装与初始化
安装 CLI
npm install -g @nestjs/cli # 全局安装
nest --version # 验证安装
也可用
npx @nestjs/cli@latest
免安装直接运行。
创建新项目
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
{"$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 支持将多个应用和库组织在一个仓库中:
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
六、调试与测试
调试
nest start --debug --watch
VS Code 中可配置 .vscode/launch.json
进行断点调试。
测试
npm run test # 单元测试
npm run test:e2e # 端到端测试
CLI 会自动生成 .spec.ts
文件,支持 Jest。
七、自定义生成器(Schematics)
Nest CLI 基于 Angular Schematics,可自定义模板:
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
- Prisma:
nest 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 |