文档

官方文档
https://eslint.org/

规则列表
http://eslint.cn/docs/rules/

一份标准规范
https://standardjs.com/

一份建议规范
https://juejin.im/post/5afede99f265da0b82630af8

栗子

一个现成的配置
https://github.com/AlloyTeam/eslint-config-alloy#typescript

IDE集成

可以打开autofix, 在vscode的setting.json里添加

  1. // auto fix
  2. "eslint.autoFixOnSave": true,
  3. "eslint.validate": [
  4. "javascript",
  5. "javascriptreact",
  6. {
  7. "language": "vue",
  8. "autoFix": true
  9. },
  10. {
  11. "language": "typescript",
  12. "autoFix": true
  13. },
  14. {
  15. "language": "typescriptreact",
  16. "autoFix": true
  17. }
  18. ],

Vue

parser

  1. parser: 'vue-eslint-parser',
  2. parserOptions: {
  3. parser: 'babel-eslint',
  4. sourceType: 'module'
  5. },

插件 eslint-plugin-vue

  1. extends: [
  2. // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
  3. // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
  4. 'plugin:vue/essential',
  5. // https://github.com/standard/standard/blob/master/docs/RULES-en.md
  6. 'standard'
  7. ],

<script> 标签缩进

  1. rules: {
  2. "vue/script-indent": ["error", 2, { // script标签缩进设置
  3. "baseIndent": 1, // 加一个基本缩进, WebStorm 的自动格式化一致
  4. "switchCase": 0,
  5. "ignores": []
  6. }]
  7. },
  8. overrides: [
  9. {
  10. "files": ["*.vue"],
  11. "rules": {
  12. "indent": "off",
  13. }
  14. }
  15. ],

lint代码时见到的一些骚操作

no-async-promise-executor

image.png
image.png

executor 函数也可以是 async function。然而,这通常是一个错误,原因如下:

  • 如果异步 executor 函数抛出一个错误,这个错误将会丢失,并且不会导致新构造的 Promise 被拒绝。这可能使会调试和处理一些错误变得困难。
  • 如果一个 Promise executor 函数使用了 await,这通常表示实际上没有必要使用 new Promise 构造函数,或者可以减少 new Promise 构造函数的范围。

no-void

image.png
image.png
image.png