vue项目使用eslint + prettier + husky 规范代码

364 阅读3分钟
一、前言

一个人的时候,代码随便敲
多个人一起时,互相看不上
冥冥之中,你想到了eslint + prettier + husky

二、开发工具

vscode

三、安装插件

image.png image.png

四、正式开凿

***开凿前温馨提示
为了避免版本不同带来的踩坑,如果项目中已经使用了eslint、prettier,可以在package.json中直接删掉

(1)安装eslint

npm i eslint -D
npm i @babel/eslint-parser @vue/cli-plugin-eslint @vue/eslint-config-prettier @vue/eslint-config-standard --save-dev
npm i babel-eslint eslint-config-prettier eslint-plugin-import eslint-plugin-n --save-dev

看看项目根目录有没有.eslintrc.js文件,没有可以手动新增一个

1656642754312.png 代码验证规则可以直接带走

module.exports = {
  root: true,
  env: {
    node: true
  },
  extends: ['plugin:vue/essential', '@vue/standard', '@vue/prettier'],
  rules: {
    'no-console': process.env.NODE_ENV == 'production' ? 'error' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
  },
  parserOptions: {
    parser: '@babel/eslint-parser',
    requireConfigFile: false
  }
}

如果想忽略一些文件,不使用eslint校验
神奇操作来了,检查项目根目录是否有.eslintignore文件,没有就手动添加

image.png 文件中内容可以直接复制带走

# 忽略目录
build/
node_modules/
public/
tests/

# 忽略文件
**/*-min.js
**/*.min.js

# 忽略src/assets目录下文件的语法检查
src/assets
# 忽略当前目录下为js的文件的语法检查
*.js
*.json

package.json中添加eslint命令,表示Eslint检测当前目录下所有文件:

  "scripts": {
    "eslint": "eslint ./**/*"
  }
(2)Prettier自动格式化代码

在项目根目录中新建 .prettierrc.js 文件,该文件为 perttier 默认配置文件:

module.exports = {
  printWidth: 100, // 一行最多 100 字符
  semi: false, // 行尾需要有分号
  singleQuote: true, // 使用单引号
  trailingComma: 'none', // 末尾不需要逗号
  tabWidth: 2, // 使用 2 个空格缩进
  endOfLine: 'auto'
}

打开vs code的setting.json文件,添加以下内容

"editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
},
// 设置编辑器的默认格式化工具
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"eslint.format.enable": true,
//autoFix默认开启,只需输入字符串数组即可
"eslint.validate": [
  "javascript",
  "vue",
  "html",
  "javascriptreact",
  "vue-html"
],
"[html]": {
  "editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
  "editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
  "editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[less]": {
  "editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
  "editor.defaultFormatter": "esbenp.prettier-vscode"
},
// --------------------  vetur 配置  --------------------
"vetur.format.defaultFormatter.html": "js-beautify-html",
// 让vue中的js按prettier进行格式化 用这个
"vetur.format.defaultFormatter.js": "prettier",
"vetur.format.defaultFormatterOptions": {
  "js": "prettier",
  "js-beautify-html": {
    "wrap_attributes": "aligned-multiple" //当超出折行长度时,将属性进行垂直对齐
  }
},
"vetur.validation.script": false, // 未明显使用变量校验
// --------------------  vetur 配置  --------------------
// --------------------  prettier 配置  --------------------
"prettier.useEditorConfig": false, // 不使用editorConfig配置文件设置才生效
// --------------------  prettier 配置  --------------------

以上内容设置完成后,记得重启vs code,确保一系列配置可以生效

(3)代码提交规范husky

安装husky

npm i husky -D

在终端控制台输入命令,生成.husky文件

npx husky i

修改package.json,将我们的husky放到命令中,避免其他人获取代码时husky不生效

"scripts": {
  "eslint": "eslint ./**/*",
  "prepare": "husky install"
}

使用commit-msg规范提交信息,会在.husky目录下生成commit-msg文件,记得将文件结尾方式改成lf后再保存

npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

image.png 然后我们测试一下,输入命令

git commit -m '测试'

就会提示我们 image.png 然后我们再试一下git commit -m 'fix: 测试' 命令,就会神奇的发现没有错误信息,提交成功了

git commit -m 'fix: 测试`

使用pre-commit检测提交时代码是否规范

引入lint-staged

npm i lint-staged -D

修改package.json文件,在scripts添加命令

"scripts": {
  "eslint": "eslint ./**/*",
  "lint": "lint-staged",
  "prepare": "husky install"
}

接着在.husky目录下生成pre-commit文件

npx husky add .husky/pre-commit "npm run lint"

修改package.json文件,添加"lint": "lint-staged"命令

"scripts": {
  "eslint": "eslint ./**/*",
  "lint": "lint-staged",
  "prepare": "husky install"
},

至此,项目中使用eslit + prettier + husky 已经可以大功告成了!!!