网络异常,图片无法展示
|
前言
系列常规操作,没兴趣的可以跳过这篇水文.
写过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可读性很强
网络异常,图片无法展示
|
网络异常,图片无法展示
|