当前位置:   article > 正文

eslint vscode 自动格式化_ESlint+Prettier+EditorConfig+VScode

prettier配置后代码开头有波浪线

背景

  • 协同开发时,因各人使用代码格式化不一致,diff 时就很难看出改动点在哪里
  • 看到 esint 报红就害怕,觉得上了 eslint 就像上了枷锁

目标

  • 少依赖,只需要开启 ESlint 即可
  • "零"配置,减少风格差异选择的争吵
  • 全自动化,自动修复,保持原本的习惯即可

所用知识点

  • ESLint
  • Prettier
  • EditorConfig
  • vscode

效果

  1. 点击保存command + s / Ctrl + s后自动修复

048ab6dbb854c8c6153c116eb8fe354c.png
  1. git commit时自动修复

c8650d1447746072a12b79ccee35267b.png

安装流程

ESlint+Prettier 配置

vue 项目

vue add eslint

22faada93cbd99beca47bcd37970f809.png
注意:如果想要使用 git commit触发 lint操作功能
这里可以通过空格来选择这个选项
这里是多选的,非单选

这个时候我们就会看到 Vue 帮我们创建了一个 eslint 配置文件

  1. // .eslintrc.js
  2. module.exports = {
  3. root: true,
  4. env: {
  5. node: true,
  6. },
  7. extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
  8. parserOptions: {
  9. ecmaVersion: 2020,
  10. },
  11. rules: {
  12. "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
  13. "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
  14. },
  15. };
  16. // package.json
  17. {
  18. "name": "demo-vue-eslint",
  19. "version": "1.0.0",
  20. "description": "",
  21. "author": "",
  22. "scripts": {
  23. "test": "echo "Error: no test specified" && exit 1",
  24. "lint": "vue-cli-service lint"
  25. },
  26. "main": "index.js",
  27. "devDependencies": {
  28. "@vue/cli-plugin-eslint": "^4.3.1",
  29. "@vue/eslint-config-prettier": "^6.0.0",
  30. "eslint": "^6.7.2",
  31. "eslint-plugin-prettier": "^3.1.1",
  32. "eslint-plugin-vue": "^6.2.2",
  33. "lint-staged": "^9.5.0",
  34. "prettier": "^1.19.1"
  35. },
  36. "gitHooks": {
  37. "pre-commit": "lint-staged"
  38. },
  39. "keywords": [],
  40. "license": "ISC",
  41. "lint-staged": {
  42. "*.{js,jsx,vue}": ["vue-cli-service lint", "git add"]
  43. }
  44. }

现在我们就可以通过

npm run lint

来格式化全部代码了

因为这个脚本依赖于 vue-cli-service
如果项目中缺少这个依赖就会报错
这个时候我们只要添加这个依赖就可以了 sh npm i @vue/cli-service -D

React 项目

安装依赖

  1. 删除eslintCOnfig
  2. 安装依赖

sh npm i babel-eslint eslint eslint-config-babel eslint-config-prettier eslint-plugin-import eslint-plugin-prettier eslint-plugin-react eslint-plugin-standard prettier -D

最终的效果图如下

3a0719a4be40adcfbb07ae398e1e72af.png

配置 Eslint

  1. // .eslintrc.js
  2. module.exports = {
  3. root: true,
  4. env: {
  5. browser: true,
  6. },
  7. extends: [
  8. "prettier",
  9. "prettier/standard",
  10. "prettier/react",
  11. "plugin:react/recommended",
  12. ],
  13. plugins: ["prettier"],
  14. rules: {
  15. "prettier/prettier": "error",
  16. },
  17. parser: "babel-eslint",
  18. settings: {
  19. react: {
  20. pragma: "React",
  21. version: "detect",
  22. },
  23. },
  24. };

配置 git hook

npm install pretty-quick husky -D
注意:这里一定要确保提前安装好了 prettier

然后在package.json添加

  1. "husky": {
  2. "hooks": {
  3. "pre-commit": "pretty-quick --staged"
  4. }
  5. }

88c78a186fafe3b09eaee886d89492f3.png

.eslintignore

在根目录创建.eslintignore

  1. build/*.js
  2. src/assets
  3. public
  4. dist

这里是忽略文件的配置,比如我们打包后的文件dist/**,我们当然是不希望格式化的

定制 Prettier

我们使用 Prettier 就是为了零配置

但是默认的东西,总会有不喜欢的

所以 Prettier 还是提供了少许的配置供我们修改

比如:

  • 单引号
  • 末尾属性保留,
  • tab宽度为2
  • seim不使用分号
  • ...

在根目录创建.prettierrc.js

  1. // .prettierrc.js
  2. module.exports = {
  3. singleQuote: true, // 平常模式使用单引号
  4. trailingComma: "es5", // 末尾属性添加,
  5. tabWidth: 2, // tab 为2个空格长度
  6. semi: false, // 不需要分号
  7. printWidth: 120, // 单行长度
  8. };

VScode:检查 + 自动修复

安装ESLint插件

这里只对 VScode进行演示

5119558435ae9489adadfe6d07fee1cd.png

随机创建一个文件测试1.vue

5bbaf5b20629104bba410aa6170b9658.png

出现红色波浪线,说明ESlint配置成功

现在我们来配置自动修复功能

50cbc17b6086824ac5c53533d9a2600d.png
  1. Mac 用户按住 shift + command + p唤醒搜索栏;Win 用户按F1或者Ctrl + shift + p
  2. 输入open settings json

settings.json里面添加以下语句

  1. "eslint.enable": true,
  2. "eslint.run": "onType",
  3. "eslint.validate": [
  4. "javascript",
  5. "javascriptreact",
  6. "vue",
  7. "html"
  8. ],
  9. "editor.codeActionsOnSave": {
  10. "source.fixAll": true
  11. },
  12. "eslint.alwaysShowStatus": true,

b2350e087df8f840cc1ee40d43d63f7f.png

配置完成

建议使用 command + q彻底关闭 vscode后再开启,Win 用户直接关闭 vscode 即可
避免后期可能遇到格式化时代码混乱

EditorConfig

如果还不清楚EditorConfig是什么的,进入官网查看

在根目录创建.editorconfig

  1. # https://editorconfig.org
  2. root = true
  3. [*]
  4. charset = utf-8
  5. indent_style = space
  6. indent_size = 2
  7. end_of_line = lf
  8. insert_final_newline = true
  9. trim_trailing_whitespace = true

然后再安装插件

009663bad5c4f0afa5beb56f3a33c58f.png

如何推广

vscode 提示安装插件

创建.vscode/extensions.json

  1. {
  2. // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
  3. // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
  4. // List of extensions which should be recommended for users of this workspace.
  5. "recommendations": ["dbaeumer.vscode-eslint", "editorconfig.editorconfig"],
  6. // List of extensions recommended by VS Code that should not be recommended for users of this workspace.
  7. "unwantedRecommendations": []
  8. }

7a5e0f7c3ed4e31eab991c459f3185ab.png

当新的开发者接手这个项目时

81a6265db4d722bc637512f1d22e8bd4.png

输入@recommended即可看到我们提示用户安装对应的插件

无侵入

如果是按照 React项目安装的,就无需再看了

根据vue add eslint安装的 git hook

  1. "lint-staged": {
  2. "*.{js,jsx,vue}": [
  3. "vue-cli-service lint",
  4. "git add"
  5. ]
  6. }

这样的方案是更改全局的

如果有些项目是手动 diff 的 ,这样无疑会破坏原本线上与开发的版本,到时后续的 diff 不便

这里如果通过vue add eslint添加 git hook 的改为以下方案

npm install pretty-quick husky -D
注意:这里一定要确保提前安装好了 prettier

然后在package.json添加

  1. "husky": {
  2. "hooks": {
  3. "pre-commit": "pretty-quick --staged"
  4. }
  5. }

1139d17a8e803c4b20c871bf479ec42c.png

那么当新的开发者加入,那么对于他来说,本文的全部配置他是无感的,比如没有安装 ESlint 插件,他就不会报错,不报错当然是无感的,他的每次提交也不会全局的破坏原本的项目风格

每次提交只修改提交文件,这种渐进的改变会让别人不知道整个 ESlint 方案的存在

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/697240
推荐阅读
相关标签
  

闽ICP备14008679号