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
相关推荐
Eric_见嘉10 小时前
NestJS 🧑‍🍳 厨子必修课(九):API 文档 Swagger
前端·后端·nestjs
XiaoYu20029 天前
第3章 Nest.js拦截器
前端·ai编程·nestjs
XiaoYu200210 天前
第2章 Nest.js入门
前端·ai编程·nestjs
实习生小黄11 天前
NestJS 调试方案
后端·nestjs
当时只道寻常14 天前
NestJS 如何配置环境变量
nestjs
濮水大叔1 个月前
VonaJS是如何做到文件级别精确HMR(热更新)的?
typescript·node.js·nestjs
ovensi1 个月前
告别笨重的 ELK,拥抱轻量级 PLG:NestJS 日志监控实战指南
nestjs
ovensi1 个月前
Docker+NestJS+ELK:从零搭建全链路日志监控系统
后端·nestjs
Gogo8161 个月前
nestjs 的项目启动
nestjs