NestJS 7.x 折腾记: (1) 项目初始化及常规提交门禁加入

简介: 系列常规操作,没兴趣的可以跳过这篇水文.写过Angular 2+的小伙伴会有一种天然的熟悉感.因为Nest基本就是同一个思想模式搞得~~

网络异常,图片无法展示
|


前言


系列常规操作,没兴趣的可以跳过这篇水文.


写过Angular 2+的小伙伴会有一种天然的熟悉感.


因为Nest基本就是同一个思想模式搞得~~


实操



安装


npm i -g @nestjs/cli


CLI Help


还是熟悉的模样,极具通用性的CLI,


可以快速创建各种模块和中间件~


linqunhe@crper-MBP  ~/Code  neh                        
Usage: nest <command> [options]
Options:
  -v, --version                                   Output the current version.
  -h, --help                                      Output usage information.
Commands:
  new|n [options] [name]                          Generate Nest application.
  build [options] [app]                           Build Nest application.
  start [options] [app]                           Run Nest application.
  info|i                                          Display Nest project details.
  update|u [options]                              Update Nest dependencies.
  add [options] <library>                         Adds support for an external library to
                                                  your project.
  generate|g [options] <schematic> [name] [path]  Generate a Nest element.
    Available schematics:
      ┌───────────────┬─────────────┐
      │ name          │ alias       │
      │ application   │ application │
      │ class         │ cl          │
      │ configuration │ config      │
      │ controller    │ co          │
      │ decorator     │ d           │
      │ filter        │ f           │
      │ gateway       │ ga          │
      │ guard         │ gu          │
      │ interceptor   │ in          │
      │ interface     │ interface   │
      │ middleware    │ mi          │
      │ module        │ mo          │
      │ pipe          │ pi          │
      │ provider      │ pr          │
      │ resolver      │ r           │
      │ service       │ s           │
      │ library       │ lib         │
      │ sub-app       │ app         │
      │ resource      │ res         │
      └───────────────┴─────────────┘
 linqunhe@crper-MBP  ~/Code  nest new --help 
Usage: nest new|n [options] [name]
Generate Nest application.
Options:
  --directory [directory]                  Specify the destination directory
  -d, --dry-run                            Report actions that would be performed without
                                           writing out results.
  -g, --skip-git                           Skip git repository initialization.
  -s, --skip-install                       Skip package installation.
  -p, --package-manager [package-manager]  Specify package manager.
  -l, --language [language]                Programming language to be used (TypeScript or
                                           JavaScript).
  -c, --collection [collectionName]        Schematics collection to use.
  -h, --help                               Output usage information.


项目初始化


# 初始化项目
# nest-project: 就是你要初始化的项目名
nest new nest-project


网络异常,图片无法展示
|


目录结构解释


├── .eslintrc.js # eslint 规则配置
├── .gitignore # git忽略配置
├── .prettierrc # prettier格式化工具配置
├── README.md # 项目初始化描述文档 
├── nest-cli.json # 脚手架Nest的项目级别配置
├── package.json # 不言而喻
├── src
│   ├── app.controller.spec.ts # 单元测试文件
│   ├── app.controller.ts # controller, 功能接口写这里
│   ├── app.module.ts # 根模块,模块有很清晰的领域概念,可以包含自己的provider,service,也能打包给别人用
│   ├── app.service.ts # Provider,就是提供者,比如数据库数据获取,第三方接口组装
│   └── main.ts # 项目主入口文件
├── test # 单元测试目录
│   ├── app.e2e-spec.ts
│   └── jest-e2e.json
├── tsconfig.build.json # 生产模式ts配置文件,继承tsconfig.json,做了一些其他覆写配置而已
├── tsconfig.json # ts配置文件
└── yarn.lock # 不言而喻


nest默认的单元测试使用的是Jest,亲切友好.


提交门禁配置


提交门禁是一种很好的东东,基本是项目必备的.


业务组那边用的是我们包装过的提交门禁(中文化及规则改动),


系统组就不需要了,直接采用github angular那套提交规范即可.


安装


# @commitlint/cli @commitlint/config-conventional : 校验提交规格的(这套是angular那套)
 # commitizen 可以拦截git cz 触发规则校验提交交互
 # lint-staged 可以给git暂存区特定文件设置执行规则,比如ts走tslint,所有文件prettier
 # husky 可以拦截git钩子做一些事情,比如提交记录拦截去执行校验
 yarn add @commitlint/cli @commitlint/config-conventional commitizen lint-staged husky


配置(package.json)


配置支持分离式加载(比如.lintstagedrc,YAML!)和package.json


package.json不是很丰满的情况下,我更倾向于写在里面


{
  "name": "xxx-bff-core",
  "version": "0.0.1",
  "description": " xxxx 3.0 BFF",
  "author": {
    "email": "linqh@xxxx.com",
    "name": "linqunhe"
  },
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "cross-env NODE_ENV=development nest start --watch",
    "start:debug": "cross-env NODE_ENV=development nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json",
    "pm2start": "npm run build && pm2 start ecosystem.config.js",
    "commit": "git cz" # yarn commit 或者npm run commit可以唤醒交互式提交
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged", # 准备提交的时候执行lint-staged的逻辑,看下面
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS "  # lint-staged过了之后再校验提交规格!
    }
  },
  "lint-staged": { # 校验哪些文件走规则,这里就是所有js相关的先格式化再eslint规范化
    "src/**/*.{js,ts,tsx,jsx}": [
      "prettier --write",
      "eslint --fix"
    ]
  },
  "commitlint": { # commitlint提交规则配置
    "extends": [
      "@commitlint/config-conventional"
    ]
  }
}


效果图


这样提交的commit可读性很强


网络异常,图片无法展示
|



网络异常,图片无法展示
|


目录
相关文章
|
存储 开发工具 git
二十四.SpringCloudConfig源码-配置拉取流程
这篇文章是接上一篇的,因为文章太长看起来太累,所以就分了一下
|
SQL JSON 机器人
pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计,完结撒花),源码提供,视频教程
pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计,完结撒花),源码提供,视频教程
|
前端开发
前端学习笔记202304学习笔记第九天-脚手架命令注册和参数分析2
前端学习笔记202304学习笔记第九天-脚手架命令注册和参数分析2
80 0
|
前端开发
前端学习笔记202304学习笔记第九天-脚手架命令注册和参数分析
前端学习笔记202304学习笔记第九天-脚手架命令注册和参数分析
53 0
【宜搭】使用远程API手动或者默认设置中英文(顺便吐槽一下需求提了还浪费时间,因为根本不会做)
在钉钉中使用宜搭,如果是自己发布的应用没有切换语言的按钮。必须到宜搭首页进行切换。这对外贸或者其他有英文需求的行业不是很友好。尤其是上下级组织分发的应用,切换一下语言需要跑到上级组织工作台点一下语言切换才能变为英文。 为此提了需求希望宜搭优化一下,但是然并卵。无用。
【宜搭】使用远程API手动或者默认设置中英文(顺便吐槽一下需求提了还浪费时间,因为根本不会做)
|
JSON 前端开发 数据格式
#yyds干货盘点 【React工作记录十二】前端对接口参数错误如何解决
#yyds干货盘点 【React工作记录十二】前端对接口参数错误如何解决
180 0
|
Oracle IDE Java
最详细的Android开发环境配置经验分享(包含配置过程中可能出现的问题及解决办法。繁琐的配置步骤是否是你头疼呢,详细配置步骤你值得拥有!)
最详细的Android开发环境配置经验分享(包含配置过程中可能出现的问题及解决办法。繁琐的配置步骤是否是你头疼呢,详细配置步骤你值得拥有!)
435 0
最详细的Android开发环境配置经验分享(包含配置过程中可能出现的问题及解决办法。繁琐的配置步骤是否是你头疼呢,详细配置步骤你值得拥有!)
|
Linux 开发工具 git
NestJS 7.x 折腾记: (5) 管道,一个好玩的东西!比如入参校验!
管道这个词,若是有玩过Linux的小伙伴肯定知晓,比如(看图): 意思就git的提交记录以单行显示的前三条,而且提交概要中有build这个词的~ 在nest里面的管道,主要是用来做入参数据类型的拦截转换; 跟ng提供的概念差不多,大同小异~~
475 0
|
前端开发
#私藏项目实操分享# 【React工作记录十九】IE校验问题
#私藏项目实操分享# 【React工作记录十九】IE校验问题
67 0
#私藏项目实操分享# 【React工作记录十九】IE校验问题
BestMPRBaseVtk-002-修改工程,搬运官方代码并尝试理解-1
BestMPRBaseVtk-002-修改工程,搬运官方代码并尝试理解-1
139 0
BestMPRBaseVtk-002-修改工程,搬运官方代码并尝试理解-1