乐趣区

关于eslint:eslint常用配置

.eslintrc.js

module.exports = {
  root: true,
  env: {node: true,},
  extends: [
    "plugin:vue/essential",
    "eslint:recommended",
    "@vue/typescript/recommended",
    "@vue/prettier",
    "@vue/prettier/@typescript-eslint",
  ],
  parserOptions: {ecmaVersion: 2020,},
  rules: {
    /**
     * 官网规定: https://eslint.bootcss.com/docs/rules/
     */
    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
    "@typescript-eslint/no-explicit-any": "off",
    "@typescript-eslint/camelcase": "off",
    "quotes": [1, "double"], // 引号类型 `` ""''
    "semi": ["off", "always"], // 语句强制分号结尾
    "semi-spacing": [0, { before: false, after: true}], // 分号前后空格
    "newline-after-var": 2, // 变量申明后是否须要空一行
    "getter-return": ["error", { allowImplicit: true}], // 强制 getter 函数中呈现 return 语句
    "no-control-regex": "error", // 禁止在正则表达式中呈现控制字符
    "no-dupe-args": "error", // 禁止在函数定义或表白中呈现重名参数
    "no-dupe-keys": "error", // 禁止对象字面量中呈现反复的 key
    "no-duplicate-case": "error", // 禁止呈现反复的 case 标签
    "no-empty": "error", // 禁止呈现空语句块
    "no-empty-character-class": "error", // 禁止在正则表达式中应用空字符集
    "no-ex-assign": "error", // 禁止对 catch 子句中的异样从新赋值
    "no-extra-semi": "error", // 禁用不必要的分号
    "no-func-assign": "error", // 禁止对 function 申明从新赋值
    "no-inner-declarations": "error", // 要求函数申明和变量申明(可选的)在程序或函数体的顶部
    "no-irregular-whitespace": "error", // 禁止不规则的空白
    "no-obj-calls": "error", // 禁止将 Math、JSON 和 Reflect 对象当作函数进行调用
    "no-unsafe-negation": "error", // 禁止对关系运算符的左操作数应用否定操作符
    "require-atomic-updates": "error", // 禁止因为 await 或 yield 的应用而可能导致呈现竞态条件的赋值
    "use-isnan": "error", // 禁止与‘NaN’的比拟
    "valid-typeof": ["error", { requireStringLiterals: true}], // 强制 typeof 表达式与无效的字符串进行比拟
    "array-callback-return": "error", // 强制数组办法的回调函数中有 return 语句
    "block-scoped-var": "error", // 强制把变量的应用限度在其定义的作用域范畴内
    "curly": "error", // 强制所有管制语句应用统一的括号格调
    "default-case": "error", // 要求 switch 语句中有 default 分支
    "dot-location": ["error", "property"], // 强制要求点操作符和属性放在同一行
    "dot-notation": ["error"], // 强制尽可能地应用点号
    "eqeqeq": ["error", "always"], // 要求应用 === 和 !==
    "max-classes-per-file": "error", // 制每个文件只能蕴含一个特定数量的类,没有更多
    "no-case-declarations": "error", // 不容许在 case 子句中应用词法申明, 能够用大括号
    "no-else-return": "error", // 禁止 if 语句中 return 语句之后有 else 块
    "no-empty-function": "error", // 禁止呈现空函数
    "no-empty-pattern": "error", // 禁止应用空解构模式
    "no-fallthrough": ["error", { commentPattern: "break[\\s\\w]*omitted" }], // 禁止 case 语句落空, 如果结尾有正文满足 break[\\s\\w]*omitted,则疏忽
    "no-floating-decimal": "error", // 禁止数字字面量中应用前导和开端小数点
    "no-global-assign": "error", // 禁止对原生对象或只读的全局对象进行赋值
    "no-multi-spaces": ["error", { ignoreEOLComments: true}], // 禁止在逻辑表达式、条件表达式、申明、数组元素、对象属性、序列和函数参数四周应用多个空格
    "no-octal": "error", // 禁用八进制字面量
    "no-redeclare": "error", // 禁止屡次申明同一变量
    "no-self-assign": "error", // 禁止自我赋值
    "no-with": "error", // 禁用 with 语句
    "require-await": "error", // 禁止应用不带 await 表达式的 async 函数
    "no-shadow-restricted-names": "error", // 禁止将标识符定义为受限的名字
    "array-bracket-newline": ["error", { multiline: true}],
    "array-bracket-spacing": ["error", "never"], // 禁止在数组括号头和尾呈现空格
    "block-spacing": "error", // 禁止或强制在代码块中开括号前和闭括号后有空格
    "brace-style": "error", // 强制在代码块中应用统一的大括号格调
    "camelcase": "error", // 强制应用骆驼拼写法命名约定
    "comma-dangle": ["error", "always-multiline"], // 要求应用拖尾逗号
    "comma-spacing": ["error", { before: false, after: true}], // 强制在逗号前后应用统一的空格 (禁止在逗号前应用空格, 要求在逗号后应用一个或多个空格)
    "indent": ["error", 2], // 缩进格调, 2 空格
    "jsx-quotes": ["error", "prefer-double"], // 强制所有不蕴含双引号的 JSX 属性值应用双引号
    "key-spacing": ["error", { beforeColon: false}], // 禁止在对象字面量的键和冒号之间存在空格
    "keyword-spacing": ["error", { before: true}], // 要求在关键字之前至多有一个空格
    "line-comment-position": ["error", { position: "above"}], // 强制行正文只在代码上方
    // "lines-between-class-members": ["error", "always"], // 要求类成员之间呈现空行
    "newline-per-chained-call": ["error", { ignoreChainWithDepth: 2}], // 要求在办法链中, 容许在同一行成链的最大深度
    "no-lonely-if": "error", // 禁止 if 语句作为惟一语句呈现在 else 语句块中
    "no-multiple-empty-lines": ["error", { max: 1, maxEOF: 0}], // 强制最大间断空行数 (1), 强制文件开端的没有间断空行数
    "no-whitespace-before-property": "error", // 禁止属性前有空白
    // "object-curly-newline": ["error", { multiline: true}], // 强制花括号内应用换行符的一致性, 如果在属性外部或属性之间有换行符,就要求有换行符
    "padding-line-between-statements": [
      "error",
      {blankLine: "always", prev: ["const", "let", "var"], next: "*" },
      {blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"] },
    ], // 要求或禁止在语句间填充空行, 该配置要求变量申明之后都有空行
    "space-infix-ops": "error", // 要求操作符四周有空格
    "spaced-comment": ["error", "always"], // 强制在正文中前后增加空格
    "arrow-spacing": "error", // 强制箭头函数的箭头前后应用统一的空格
    "no-class-assign": "error", // 禁止批改类申明的变量
    "no-const-assign": "error", // 禁止批改用 const 申明的变量
    "no-dupe-class-members": "error", // 禁止类成员中呈现反复的名称
    "no-duplicate-imports": "error", // 禁止反复模块导入
    "no-new-symbol": "error", // 禁止 Symbolnew 操作符和 new 一起应用
    // "no-var": "error", // 要求应用 let 或 const 而不是 var
    "require-yield": "error", // 要求 generator 函数内有 yield
    "rest-spread-spacing": ["error", "never"], // 扩大运算符及其表达式之间不容许有空格
  },
};
退出移动版