Nest 最佳实践:nest-cli 实用指南

非常不好意思,公司年底了事情比较多,文章隔了几个星期出来,本专栏会持续更新下去的,同样非常欢迎想一起学习 nest 的同学交流学习,我的的公众号是:编程进阶录

简介

在上一篇文章当中,我提到过 nest 为开发者提供了工程化的能力,而 nest-cli 就是其提供工程化能力的表现之一。

之前已经在全局安装过了 nest-cli ,这篇文章,主要是将 nest-cli 在开发当中一些常用、实用的命令进行具体的讲解。

如果你还没有安装好 nest-cli ,可以使用下面的命令将 nest-cli 安装到全局。

bash 复制代码
npm install -g @nestjs/cli

验证 nest-cli

在命令行当中输入如下命令,能够看到对应的版本信息则安装成功,如果有安装上的困难可以在评论区交流。

bash 复制代码
nest --version

得到下面这样显示我们安装的 nest-cli 的版本

创建新的项目

nest new

在我们的上一篇文章中,我们介绍了如何使用 nest new <projectName> 命令来生成一个初始化的 nest 项目。执行此命令后,将在当前目录下生成一个包含初始开发结构和代码文件的 nest 目录。

nest new 命令也可以简写成 nest n ,使用 nest new --help 命令能够查看到命令的具体说明。

在一般情况下,我们只需要直接使用 nest new <projectName> 即可,如果你需要特殊的初始化创建,如:跳过创建 git 仓库(在 nest new <projectName> 之后加上 --skip-git)、跳过安装依赖(在 nest new <projectName> 之后加上 --skip-install)等等,使用具体的命令参数参照帮助信息即可。

代码生成器

nest generate

一般在使用这个命令的时候,我们都会简写成 nest g xxx。 这个命令在项目的开发过程当中使用得非常平凡,因为它能够大大的简化我们开发的流程,提高开发效率。

下面我来对它的一些详细的用法进行介绍。

使用 nest g --help 能够将所有能够使用的生成器命令展示出来,如下图所示:

nest g application : 能够在我们的工作空间当中创建一个新的应用程序模版,如下图所示:

这个命令在当我们的项目是一个微服务 + monorepo 的时候非常实用,能够帮助我们在同一个项目当中快速创建不同的 nest 工程,关于 monorepo 的介绍,在以后的项目实战当中会讲到。

nest g resource : 这个命令在使用 nest 开发应用的时候,用得非常的多,能够快速的帮我们创建出来一个 CRUD 的模版,我们只需要在它的基础上进行开发即可,如下图所示,创建一个 RESTFul 风格的 CRUD 模版,RESTFul 风格在我们实际的开发当中也是最为常用的。

其他的命令还有比如生成 controllerserviceguard 之类的,只需要简单的使用 nest g xxx 即可,使用这些命令能够有效的提高我们的开发效率。

这里有个小小的技巧,如果你不想在使用生成器的时候生成 **.spec.ts 文件,可以在命令的后面加上 --no-spec 或者可以在 nest-cli.json 当中加上不生成 spec 的配置,如下图所示。

常用的命令

讲完代码生成,那么就是接下来的代码编译和开发环境的一些常用的配置了。 如果你使用 nest new xxx 来创建一个全新的项目,项目默认情况下已经帮助我们配置好了整个开发过程当中需要用到的命令。

正常开发,我们使用 start:dev 命令即可,即 npm run start:devstart 开头的命令,是我们开发和后面的部署都需要使用到的命令。

test 开头的命令,是能够帮助我们运行项目当中的测试,也就是上面的代码生成器生成的以 spec.ts 结尾的测试代码文件。

lintformat 就是和我们编写的代码相关了,format 能够使用 prettier 格式化我们的代码,让代码看起来更加美观,lint 就是使用 eslint 检查我们代码当中一些错误,这两个工具一般在开发工具当中就已经集成了,这里设置命令能够帮助我们在 CI 场景下进行调用。

build 命令,能够讲我们的源代码编译成最终产物,默认情况下 nest 会使用 tsc 进行编译,可以通过修改 nest-cli.json 文件将打包器配置成 webpack 或者 swc 等。

默认情况下,使用 tsc 进行编译得到的产物,如下:

在 nest-cli.json 当中增加使用 webpack 进行打包的配置,使用下面的 nest-cli.json,或者在 build 命令后面增加 --webpack 参数即可,另外还可以使用 compilerOptions 下的 builder 来指定打包器。

json 复制代码
{
  "$schema": "https://json.schemastore.org/nest-cli",
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "compilerOptions": {
    "deleteOutDir": true,
    "webpack": true,
    // "webpackConfigPath": "webpack.config.js"
    }
}

可以看到,最终将我们的代码编译成了一个 main.js 进行输出,非常的简洁,同时还可以使用 webpack 丰富的生态,对我们的源码进行各种优化操作,所以在生产环境当中,一般情况下,都是使用 webpack 进行打包。

总结

上面是一些在使用 nest 进行项目开发的时候,非常常用的一些命令和配置,具体详细的使用可以到 nest 的官网进行查看,如果有什么不懂或者文章有什么错误的地方,欢迎评论区留言交流指正。

总的来说, nest-cli 是 nest 框架为开发者提供的一个工程化工具,它为开发者提供了从创建项目到发布部署的一整套解决方案,这种方案是如:express、koa 这种框架所不具备的。

本篇文章只是大概的介绍了一下 nest-cli 当中一些比较常用的东西,一些详细的配置或者命令的介绍,后面用到了本专栏再进行介绍。

nest 官网:docs.nestjs.com/cli/overvie...

nest 中文:nestjs.inode.club/cli/overvie...

相关推荐
永乐春秋30 分钟前
WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性
前端
鸽鸽程序猿31 分钟前
【前端】CSS
前端·css
ggdpzhk33 分钟前
VUE:基于MVVN的前端js框架
前端·javascript·vue.js
学不会•3 小时前
css数据不固定情况下,循环加不同背景颜色
前端·javascript·html
活宝小娜5 小时前
vue不刷新浏览器更新页面的方法
前端·javascript·vue.js
程序视点5 小时前
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
前端·javascript·vue.js·typescript·vue·ecmascript
coldriversnow5 小时前
在Vue中,vue document.onkeydown 无效
前端·javascript·vue.js
我开心就好o5 小时前
uniapp点左上角返回键, 重复来回跳转的问题 解决方案
前端·javascript·uni-app
开心工作室_kaic6 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
刚刚好ā6 小时前
js作用域超全介绍--全局作用域、局部作用、块级作用域
前端·javascript·vue.js·vue