强制统一代码风格--给现有项目添加eslint 和 pre-commit

文章原文:https://www.cnblogs.com/yalong/p/14070696.html

背景:

  1.为了代码风格统一, eslint 必不可少, 特别是一些老项目是没有eslint配置的。

  2.有人可能没有遵循 eslint 规范就要提交代码, 所以需要加个限制,eslint 检测不通过,不让提交,所以出现了pre-commit

添加eslint 方法如下:

1.全局安装eslint 

 npm install eslint -g 

2.在项目根目录命令行下执行

 eslint --init 

3.然后会出现提示, 根据自己的需求,按照提示一步一步来就可以。

下面这个是 提示你用eslint 的目的, 我选择第三项: 检查并找到问题,强制转换代码风格

强制统一代码风格--给现有项目添加eslint 和 pre-commit

 下面这个是你要在那种模式下使用eslint, vue react 选择JavaScript 模式,node项目 选择CommonJs

 强制统一代码风格--给现有项目添加eslint 和 pre-commit

 下面是选择了JavaScript 模式下,然后会出现React Vue 选项, 这里以React 为例

强制统一代码风格--给现有项目添加eslint 和 pre-commit

 下面是提示 你的代码是在浏览器 还是 Node端运行的, 选择浏览器端

强制统一代码风格--给现有项目添加eslint 和 pre-commit

 下面是提示你用那种 eslint 的代码风格, 推荐使用第一种 “Use  a popular style quide”

强制统一代码风格--给现有项目添加eslint 和 pre-commit

选择  “Use  a popular style quide” 之后,会出现下面三种eslint 库, 推荐使用 Airbnb 

 强制统一代码风格--给现有项目添加eslint 和 pre-commit

 下面是你想用那种文件类型作为 eslint 的配置文件, 个人比较喜欢 JSON.

 强制统一代码风格--给现有项目添加eslint 和 pre-commit

 下面是选择完之后, 会自动检查你项目依赖中缺少哪些 npm 包,提示你是否要安装, 点击YES, 安装完即可

强制统一代码风格--给现有项目添加eslint 和 pre-commit

安装完 可以看到项目跟目录下 多了  .eslintrc.json 这个文件。

然后在根目录下 新建  .eslintignore 文件,这是eslin 的忽略文件, 哪些目录下 不需要进行eslitn 检测的,可以配置说明,

下面是一个示例, 会忽略  node_module   test   src/public   这三个目录下的代码

node_modules
test
src/public

配合vscode 保存时 自动修复eslint:

1.vscode 扩展安装

强制统一代码风格--给现有项目添加eslint 和 pre-commit

 同时要保证,eslint 是开启状态

强制统一代码风格--给现有项目添加eslint 和 pre-commit

正常情况下, vscode 此时已经可以在保存的时候 自动修复eslint 错误了,

如果保存没有自动修复eslint 错误,可以看这篇: https://www.cnblogs.com/yalong/p/13960211.html

安装/配置pre-commit:

1.安装pre-commit

 npm i pre-commit -D 

2.修改 package.json 文件配置,添加如下代码

"pre-commit": [
    "lint"
 ]

同时在  scripts 里添加  "lint": "eslint --ext .js ./src",  意思是对 src 文件目录下 的所有 以 js 为后缀的文件进行检测

粘贴一个我的package.json 配置:

{
  "name": "blog",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "start": "node bin/www",
    "dev": "./node_modules/.bin/nodemon --inspect=9229 bin/www",
    "lint": "eslint --ext .js ./src",
    "lint-fix": "eslint --ext .js --fix ./src",
    "prd": "pm2 start bin/www",
    "test": "echo "Error: no test specified" && exit 1"
  },
  "dependencies": {
    "debug": "^4.1.1",
    "koa": "^2.7.0",
    "koa-bodyparser": "^4.2.1",
    "koa-convert": "^1.2.0",
    "koa-json": "^2.0.2",
    "koa-logger": "^3.2.0",
    "koa-onerror": "^4.1.0",
    "koa-router": "^7.4.0",
    "koa-static": "^5.0.0",
    "koa-views": "^6.2.0",
    "pug": "^2.0.3"
  },
  "devDependencies": {
    "axios": "^0.21.0",
    "babel-eslint": "^10.1.0",
    "cross-env": "^7.0.2",
    "eslint": "^7.14.0",
    "eslint-config-airbnb": "^18.2.1",
    "eslint-plugin-import": "^2.22.1",
    "eslint-plugin-jsx-a11y": "^6.4.1",
    "nodemon": "^1.19.1",
    "pre-commit": "^1.2.2"
  },
  "pre-commit": [
    "lint"
  ]
}

测试pre-commit:

以后再提交代码的时候, commit 完, 在push 的时候 会检测eslint 如果遇到问题就报错终止提交,如下是我的示例

强制统一代码风格--给现有项目添加eslint 和 pre-commit 

 这时候需要把eslint 错误 修改完 才能提交。

 修复eslint 错误的时候, 可以执行 npm run lint-fix  大部分问题可以自动修复,修复不了的可以进入代码里手动修复

 到此就可以愉快的写风格一样的代码了