CLI
安装
全局安装 nestjs 的 cli
bash1-- pnpm 2pnpm install -g @nestjs/cli 3-- npm 4npm install -g @nestjs/cli
起项目
bash1nest new 项目名
为了每次建项目都拿到最新的 nestjs 版本,需要经常更新全局 cli 版本:
bash1npm update -g @nestjs/cli
查看所有 cli 命令
bash1nest -h
生成代码
生成 module 代码
bash1nest generate module <module name>
得到结果:
bash1CREATE src/user/user.module.ts (81 bytes) 2UPDATE src/app.module.ts (308 bytes)
生成的代码可能是这样的:
tsx1import { Module } from '@nestjs/common' 2 3@Module({}) 4export class UserModule {}
该 Module 会自动被 app.module.ts引入:

除了 Module 外,还有后端开发中常用来做逻辑分离的 Controller 层和 Service 层都可以生成:
bash1nest generate controller <controller name> 2nest generate service <service name>
同样的,上面生成的代码会自定引入到 app.module.ts中,分别对应 controllers 和 providers。
还有一个命令可以生成一个完整模块的代码:
bash1nest generate resource <name>
这个命令会提示你想要哪些风格的模块代码:
bash1 What transport layer do you use? (Use arrow keys) 2❯ REST API 3 GraphQL (code first) 4 GraphQL (schema first) 5 Microservice (non-HTTP) 6 WebSockets
还能够提示你是否想要生成一些 CRUD 的预设代码:
bash1Would you like to generate CRUD entry points? (Y/n)
当选择是之后,就会帮助你生成整个模块的代码,包括 CRUD 的一些预设以及测试代码:

完整的模块也会注入到app.module.ts中。
后端可以自动生成的代码非常多,使用nest generate -h可以看到能够生成的代码列表:

后期根据需要生成即可。
build
nest build用来构建项目。
执行 nest build,会在 dist 目录下生成编译后的代码。
通过nest build -h,可以看到有下列选项:
bash1Options: 2 -c, --config [path] Path to nest-cli configuration file. 3 -p, --path [path] Path to tsconfig file. 4 -w, --watch Run in watch mode (live-reload). 5 -b, --builder [name] Builder to be used (tsc, webpack, swc). 6 --watchAssets Watch non-ts (e.g., .graphql) files mode. 7 --webpack Use webpack for compilation (deprecated option, use --builder 8 instead). 9 --type-check Enable type checking (when SWC is used). 10 --webpackPath [path] Path to webpack configuration. 11 --tsc Use typescript compiler for compilation. 12 --preserveWatchOutput Use "preserveWatchOutput" option when using tsc watch mode. 13 -h, --help Output usage information.
其中--webpack 和--tsc是指定用什么生成编译后的代码。
其中 webpack 会做打包,而 tsc 则是将 ts 编译成 js。
默认情况下是 ts 编译,两种方式生成的代码都可以用来发布。
--watch 是监听文件变动,自动 build 的。
但是 --watch 默认只是监听 ts、js 文件,加上 --watchAssets 会连别的文件一同监听变化,并输出到 dist 目录,比如 md、yml 等文件。
--path 是指定 tsc 配置文件的路径的。
那 --config 是指定什么配置文件呢?
是 nest cli 的配置文件。
nest-cli.json
所有 cli 选项都可以在nest-cli.json中配置。
比如 compilerOptions 里设置 webpack 为 true 就相当于 nest build --webpack。
webpack 设置为 false 就是用 tsc 了。
deleteOutDir 设置为 true,每次 build 都会都清空 dist 目录。
而 assets 是指定 nest build 的时候,把那些非 js、ts 文件也复制到 dist 目录下。
可以通过 include、exclude 来精确匹配,并且可以单独指定是否 watchAssets。
不过只支持 src 下文件的复制。
然后是 generateOptions,这些就和我们 nest generate 时的 --no-spec、--no-flat 一样的效果。
start
nest start用来在服务端中生成并 run 这些代码服务。
它有以下重要选项:
- --watch 修改文件后自动 build
- --debug 是启动调试的服务
- --exec 可以指定用什么来跑,默认是用 node 跑,你也可以切换别的 runtime。
还有一些其他的选项跟 build 差不多,这里就不做扩展,
info
执行 nest info 命令可以看到当前项目用的版本信息、npm 信息等。
bash1[System Information] 2OS Version : macOS Unknown 3NodeJS Version : v16.15.0 4PNPM Version : 7.15.0 5 6[Nest CLI] 7Nest CLI Version : 10.1.18 8 9[Nest Platform Information] 10platform-express version : 10.2.6 11mapped-types version : 2.0.2 12schematics version : 10.0.2 13testing version : 10.2.6 14common version : 10.2.6 15core version : 10.2.6 16cli version : 10.1.18
总结
nest-cli 有很多命令,这些命令可以:
- 生成代码
- 编译代码
- 监听文件变动
- 获取项目信息
这些都是框架内置的命令,能够大大简化开发的难度。