NestJS CLI 常用命令
约 1178 字大约 4 分钟
2025-09-23
全局安装 NestJS CLI
pnpm add -g @nestjs/cliyarn global add @nestjs/clinpm install -g @nestjs/clibun add -g @nestjs/cli更新 CLI
npm update -g @nestjs/cli创建新项目
创建一个新的 NestJS 项目。
nest new <project-name>--skip-git 跳过 git 的初始化
--skip-install 跳过 npm install
--package-manager 指定包管理器的
--language 可以指定 typescript 和 javascript
--strict 是指定 ts 的编译选项是否开启严格模式,也就是这 5 个选项:
"strictNullChecks": true,
"noImplicitAny": true,
"strictBindCallApply": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true严格模式详解
"strictNullChecks": true 作用: 启用严格的空值检查。
当开启 strictNullChecks 后:
null和undefined不再是所有类型的子类型。- 只有显式允许它们的变量才能接收这两个值。
let name: string = "yumeng";
// name = null; // 报错:不能将 null 赋给 string 类型
// name = undefined; // 报错如果确实需要允许空值:
let name: string | null = null; // 合法"noImplicitAny": true 作用: 禁止隐式的 any 类型。
当 TypeScript 无法推断出变量或参数类型时,会自动认为它是 any。
开启此项后,必须显式声明类型或让 TypeScript 能推断出类型,否则编译报错。
function greet(name) { // 报错:参数 'name' 隐式具有 'any' 类型
console.log("Hello " + name);
}
// 修复:
function greet(name: string) {
console.log("Hello " + name);
}"strictBindCallApply": true 作用: 在使用 Function.prototype.bind、call、apply 时进行严格的类型检查。
默认情况下,TypeScript 对 bind、call、apply 的参数校验较为宽松。
开启此项后,TypeScript 会严格检查这些方法传入的参数类型是否与原函数匹配。
function add(a: number, b: number) {
return a + b;
}
add.call(null, 10, 20); // 正确
add.call(null, "10", "20"); // 报错:参数类型不匹配"forceConsistentCasingInFileNames": true 作用: 强制文件名大小写一致。
在 Windows 和 macOS 上,文件系统是大小写不敏感的,但在 Linux 上是大小写敏感的。
启用此选项后,TypeScript 会在编译时检查import 路径中的文件名大小写是否与实际文件名一致。
// 文件名:UserService.ts
import { UserService } from './userservice'; // 报错:大小写不一致"noFallthroughCasesInSwitch": true 作用: 禁止 switch 语句中的 case 贯穿(fall-through),除非显式使用 break 或 return。
switch (value) {
case 1:
console.log("A");
case 2:
console.log("B");
}
// 报错:case 1 没有 break,会直接执行 case 2
// 正确写法
switch (value) {
case 1:
console.log("A");
break;
case 2:
console.log("B");
break;
}生成资源(模块、控制器、服务等)
快速生成模块、控制器、服务、网关等代码骨架。
生成模块
nest generate module <module-name>
# 或简写
nest g mo <module-name>生成控制器
nest generate controller <controller-name>
# 或简写
nest g co <controller-name>生成服务
nest generate service <service-name>
# 或简写
nest g s <service-name>生成提供者
nest generate provider <provider-name>
# 或简写
nest g pr <provider-name>生成网关
nest generate gateway <gateway-name>
# 或简写
nest g ga <gateway-name>生成拦截器
nest generate interceptor <interceptor-name>
# 或简写
nest g in <interceptor-name>生成守卫
nest generate guard <guard-name>
# 或简写
nest g gu <guard-name>生成管道
nest generate pipe <pipe-name>
# 或简写
nest g pi <pipe-name>生成装饰器
nest generate decorator <decorator-name>
# 或简写
nest g de <decorator-name>生成过滤器
nest generate filter <filter-name>
# 或简写
nest g fi <filter-name>生成类
nest generate class <class-name>
# 或简写
nest g cl <class-name>生成接口
nest generate interface <interface-name>
# 或简写
nest g itf <interface-name>生成枚举
nest generate enum <enum-name>
# 或简写
nest g en <enum-name>生成完整模块
nest generate resource <name>可以在 @nestjs/schematics 里看到这些代码模版的定义
运行项目
启动 NestJS 应用。
nest start选项:
nest start --watch # 热更新模式
nest start --debug # 调试模式nest start -h构建项目
编译 TypeScript 项目到 JavaScript。
nest build--wepback 和 --tsc 是指定用什么编译,默认是 tsc 编译,也可以切换成 webpack。
tsc 不做打包、webpack 会做打包,两种方式都可以。
node 模块本来就不需要打包,但是打包成单模块能提升加载的性能。
查看项目信息
查看项目信息的,包括系统信息、 node、npm 和依赖版本
nest info
_ _ _ ___ _____ _____ _ _____
| \ | | | | |_ |/ ___|/ __ \| | |_ _|
| \| | ___ ___ | |_ | |\ `--. | / \/| | | |
| . ` | / _ \/ __|| __| | | `--. \| | | | | |
| |\ || __/\__ \| |_ /\__/ //\__/ /| \__/\| |_____| |_
\_| \_/ \___||___/ \__|\____/ \____/ \____/\_____/\___/
[System Information]
OS Version : Windows10.0.19045
NodeJS Version : v20.19.0
PNPM Version : 10.13.1
[Nest CLI]
Nest CLI Version : 11.0.10
[Nest Platform Information]
platform-express version : 11.1.6
platform-fastify version : 11.1.6
schematics version : 11.0.7
testing version : 11.1.6
common version : 11.1.6
config version : 4.0.2
core version : 11.1.6
cli version : 11.0.10查看帮助
显示 CLI 命令的帮助信息。
nest --help或者查看某个命令的详细选项:
nest <command> --help