快速掌握nest-cli用法

1,006 阅读5分钟

1.新建nest项目

  • 未全局安装nest
// 使用npx安装,会首先将nest下载下来,然后进行安装,这样每次拿到的都是最新的nest版本,但是总是会从远程下载
npx @nestjs/cli new projectName
  • 已经在本地全局安装了nest
// 全局安装nest
npm install @nestjs/cli -g
// 新建项目
nest new projectName

这种创建项目的方法需要对nest版本进行升级,以便于创建的nest项目版本是最新的。
升级nest版本命令:

npm update @nestjs/cli -g

2.nest命令

使用nest -h可以查看到nest都提供了哪些命令:

image.png

 命令名称        简写         描述         
applicationapplication 生成一个新的应用nest new xxx 
classcl生成一个class类nest generate|g class calssname --flat
configurationconfig生成一个nest-cliconfig配置,默认创建项目时会存在
controller  co   生成一个控制器声明, nest generate|g co xx, 会自动注入 
decoratord生成一个自定义的装饰器,nest g d aa --flat
filterf生成一个过滤器, nest g f aa
gatewayga生成一个网关类, nest g ga aa --flat
guardgu生成一个守卫,nest g gu aa
interceptoritc生成拦截器,nest g itc aa
interfaceitf生成一个接口,nest g itf aaa
librarylib生成一个新的library
middlewaremi生成一个新的中间件
 module  mo  在xx文件下生成module模块,nest generate|g module xx ,该模块会在app.module中自动注入
pipepi生成一个pipe
providerpr生成一个provider
resourceres生成一个完整模块的代码,不需要一个个生成,nest g res xxx, 同样生成后会在app.module.ts中注入
resolverrGenerate a GraphQL resolver declaration
services生成一个service, 会自动注入
sub-appapp在单线程内生成一个新的应用程序

3. nest new选项

控制台输入nest new -h后,打印出可用选项

image.png

 命令名称       描述         
--directory [directory]指定目标目录
-d, --dry-run报告将在不写出结果的情况下执行的操作。(默认值:false)
-g, --skip-git跳过git存储库初始化。(默认值:false)
-s, --skip-install跳过包安装。(默认值:false)
-p, --package-manager [packageManager]指定包管理器。nest new project -p npm
-l, --language [language]要使用的编程语言(TypeScript或JavaScript)(默认:"TypeScript")。nest new project -l JavaScrip
-c, --collection [collectionName]要使用的Schematics集合(默认值:"@nestjs/ Schematics ")
--strict在TypeScript中启用严格模式。(默认值:false)
-h, --help帮助信息

常用

  • --skip-git: 跳过git的初始化
  • --skip-install: 跳过依赖包安装
  • --package-manager: 指定包管理器,如npm、yarn、pnpm等
  • --language: 可以指定 typescript 和 javascript,默认是ts
  • --strict: 是指定 ts 的编译选项是否开启严格模式的,就是下面5个选项 image.png

4. nest generate 选项

image.png

 命令名称       描述         
-d, --dry-run报告将要采取的行动而不写出结果
-p, --project [project]要在其中生成文件的项目
--flat指定不生成对应目录
--no-flat强制生成目录
--spec指定生成测试文件,默认生成
--spec-file-suffix [suffix]对规范文件使用自定义后缀。
--skip-import是指定不在 AppModule 里引入(默认值:false)
--no-spec指定不生成测试文件
-c, --collection [collectionName]要使用的原理图集合

5. nest build 选项

控制台输入nest build -h打印出可用选项 image.png

 命令名称       描述         
-c, --config [path]nest-cli配置文件路径
-p, --path [path]tsconfig文件的路径
-w, --watch在监视模式下运行(实时加载)
-b, --builder [name]要使用的构建器(tsc, webpack, swc)在观察模式下运行(live-reload)
--watchAssets注意非ts(例如,.graphql)文件模式
--webpack使用webpack进行编译(已弃用选项,请使用——builder代替)
--type-check启用类型检查(当使用SWC时)
--webpackPath [path]webpack配置的路径
--tsc使用typescript编译器进行编译
--preserveWatchOutput使用tsc手表模式时,使用“preserveWatchOutput”选项
  • --wepback 和 --tsc 是指定用什么编译,默认是 tsc 编译,也可以切换成 webpack
    • weback产物:统一打包到一个main.js中 nest bduild --webpack image.png
    • tsc默认打包产物
      image.png
  • --watch监听文件变动,自动 build 的
  • --path指定tsc配置文件路径
  • --config指定nest-cli.json配置文件

nest-cli.json配置文件解释 image.png

  • compilerOptions下的webpack为true: 相当于nest build --webpack, 设置为false的时候就用tsc。
  • deleteOutDir: 是否每次build都清空dist目录
  • generateOptions下的spec: 是否生成测试文件,这个配置之后在项目中创建模块的时候就不需要带该参数了
  • generateOptions下的flat: 创建模块时是否平铺,这个配置之后在项目中创建模块的时候就不需要带该参数了

6. nest start选项

控制台输入nest start -h image.png

 命令名称       描述         
-c, --config [path]nest-cli配置文件路径
-p, --path [path]tsconfig文件的路径
-w, --watch在监视模式下运行(实时加载)
-b, --builder [name]要使用的构建器(tsc, webpack, swc)在观察模式下运行(live-reload)
--watchAssets注意非ts(例如,.graphql)文件模式
-d, --debug [hostport]在调试模式下运行(带——inspect标志)
--webpack使用webpack进行编译(已弃用选项,请使用——builder代替)
--webpackPath [path]webpack配置的路径
--type-check启用类型检查(当使用SWC时)
--tsc使用typescript编译器进行编译
--sourceRoot [sourceRoot]指向标准模式结构中单个项目的源代码根,或单模式结构中默认项目的源代码根
--entryFile [entryFile]该命令将使用的条目文件的路径。默认是在Nest的CLI配置文件中定义的。
-e, --exec [binary]二进制运行(默认:"node")。
--preserveWatchOutput使用tsc手表模式时,使用“preserveWatchOutput”选项
  • --watch: 改动文件之后自动重新 build
  • --debug: 启动调试的 websocket 服务,用来 debug
  • --exec: 可以指定用什么来跑,默认是用 node 跑,也可以切换别的 runtime

nest info: 查看项目信息的,包括系统信息、 node、npm 和依赖版本。 image.png

备注

这是我学习用来自己再实现一次刷熟练度的地方,原文是光神写的小册《Nest通关秘籍》