神光《Nest 通关秘籍》学习总结-快速入门Nest CLI

1,918 阅读6分钟

最近在学习神光大神的《Nest通关秘籍》,该小册主要包含下面这些内容:

image.png 想购买的可以点击《传送门》。

接下来的日子里,我将更新一系列的学习笔记。感兴趣的可以关注我的专栏《Nest 通关秘籍》学习总结

特别申明:本系列文章已经经过作者本人的允许。 大家也不要想着白嫖,我的笔记只是个人边学习边记录的,不是很完整,大家想要深入学习还是要自己去购买原版小册。

一、安装

全局安装Nest CLI

npm i -g @nestjs/cli

使用nest cli创建项目

nest new [项目名]

如果你不想安装nest cli到本机,你可以直接使用npx

npx nest new [项目名]

使用这种方式的好处是你不需要对nest进行升级,每次都是最新的版本。

二、运行

安装过程完成后,您可以在系统命令行工具中运行以下命令,以启动应用程序:

npm run start

此命令启动 HTTP 服务监听定义在 src/main.ts 文件中定义的端口号。在应用程序运行后, 打开浏览器并访问 http://localhost:3000/。 你应该看到 Hello world! 信息。

要监听文件中的更改,您可以运行以下命令来启动应用程序:

npm run start:dev

此命令将监听您的文件,自动重新编译并重新加载服务器。

三、目录结构

将会创建 project-name 目录, 安装 node_modules 和一些其他样板文件,并将创建一个 src 目录,目录中包含几个核心文件。

src
 ├── app.controller.spec.ts
 ├── app.controller.ts
 ├── app.module.ts
 ├── app.service.ts
 └── main.ts

以下是这些核心文件的简要概述:

app.controller.ts带有单个路由的基本控制器示例。
app.controller.spec.ts对于基本控制器的单元测试样例
app.module.ts应用程序的根模块。
app.service.ts带有单个方法的基本服务
main.ts应用程序入口文件。它使用 NestFactory 用来创建 Nest 应用实例。

以上我们介绍了如何使用nest cli创建一个项目,并且运行它。接下来我们来认识一下nest当中常见的命令。

四、常用命令

下面是一些常用的 Nest CLI 命令及其解释:

  1. nest new :创建一个新的 Nest 应用程序。 参数是你想要为应用程序指定的名称。
  2. nest build:将 Nest 应用程序构建为可执行的 JavaScript 代码。这将把你的 TypeScript 代码编译为 JavaScript,以便在生产环境中运行。
  3. nest start:启动 Nest 应用程序的开发服务器。在开发过程中使用此命令可以自动检测更改并重新加载应用程序。
  4. nest generate :生成不同类型的 Nest 代码文件,如控制器、服务、模块等。 参数是你想要生成的文件类型, 参数是文件的名称。
  5. nest generate module :生成一个新的模块文件。模块是 Nest 应用程序的组织单元,用于将相关的功能模块化。
  6. nest generate controller :生成一个新的控制器文件。控制器负责处理传入的请求并返回响应。
  7. nest generate service :生成一个新的服务文件。服务用于处理应用程序的业务逻辑。
  8. nest generate class :生成一个新的类文件。类是一种可复用的代码块,用于定义对象的行为和属性。
  9. nest generate pipe :生成一个新的管道文件。管道用于对传入的数据进行转换和处理。
  10. nest generate guard :生成一个新的守卫文件。守卫用于在路由处理程序执行之前对请求进行身份验证和授权。

接下来我们挨个看看

4.1 nest new

使用nest new -h查看,它有以下这些选项:

--skip-git--skip-install 很容易理解,就是跳过 git 的初始化,跳过 npm install

--package-manager 是指定包管理器的,之前创建项目的时候会让我们选择,比如nest new xxx -p pnpm,就会在创建项目的同时使用pnpm安装包的依赖。

--language 可以指定 typescript 和 javascript,一般我们都选择 ts,用默认的就好。

--strict 是指定 ts 的编译选项是否开启严格模式的,也就是这么 5 个选项:

至于 --collection 的解释,就要涉及到 nest generate 命令了。

4.2 nest generate

nest 命令除了可以生成整个项目外,还可以生成一些别的代码,比如 controller、service、module 等。

比如生成 module:

nest generate module aaa

它会生成 module 的代码,并且自动注入到AppModule里面:

同时也可以生成 controller、service 等代码:

nest generate controller aaa
nest generate service aaa

同样的,它们也会更新到 module 的依赖里去:

那如果我不想一个个生成,能不能执行把这三个模块用一个命令生成呢?答案是可以的。我们可以用下面这个命令:

nest generate resource xxx

它会让你选择是哪种代码,因为 nest 支持 http、websocket、graphql、tcp 等,

这里我们选择 http 的 REST API,直接回车。

然后会让你选择是否生成 CRUD 代码:

然后就会生成整个模块的 CRUD + REST api 的代码:

这就是 nest generate,可以快速生成各种代码:

这里我们看到nest generate也有不少选项:

--flat--no-flat 是指定是否生成对应目录的:

--spec--no-spec 是指定是否生成测试文件:

--skip-import 是指定不在 AppModule 里引入:

--project,这是指定生成代码在哪个子项目的

4.3 nest build

nest build,会在 dist 目录下生成编译后的代码。同样,它也有一些选项:

--wepback--tsc 是指定用什么编译,默认是 tsc 编译,也可以切换成 webpack。tsc 不做打包、webpack 会做打包,两种方式都可以。

--watch 是监听文件变动,自动 build 的。--watch 默认只是监听 ts、js 文件,加上 --watchAssets 会连别的文件一同监听变化,并输出到 dist 目录,比如 md、yml 等文件。

--path 是指定 tsc 配置文件的路径的。

--config 是指定什么配置文件呢?是 nest cli 的配置文件。

刚刚我们说的那些选项都可以在 nest-cli.json 里配置:

比如 compilerOptions 里设置 webpack 为 true 就相当于 nest build --webpack,一样的效果:

deleteOutDir 设置为 true,每次 build 都会都清空 dist 目录。

assets 是指定 nest build 的时候,把那些非 js、ts 文件也复制到 dist 目录下。可以通过 include、exclude 来精确匹配,并且可以单独指定是否 watchAssets。

generateOptions,这些就和我们 nest generate 时的 --no-spec、--no-flat 一样的效果。

sourceRoot 是指定源码目录。

entryFile 是指定入口文件的名字,默认是 main。

而 $schema 是指定 nest-cli.json 的 schema,也就是可以有哪些属性的。

如果想全面了解 nest-cli.json 都有啥属性,可以看看这个 schema 定义。

4.4 nest start

nest start会每次重新 build ,并且用 node 把 main.js 跑起来。

它有这些选项:

--watch 是最常用的选项了,也就是改动文件之后自动重新 build.

--debug 是启动调试的 websocket 服务,用来 debug。

--exec 可以指定用什么来跑,默认是用 node 跑,你也可以切换别的 runtime。

4.5 nest info

nest info 命令,这个就是查看项目信息的,包括系统信息、 node、npm 和依赖版本:

以上就是nest日常用的一些命令。欢迎大家关注+点赞。