theydy / notebook

记录读书笔记 + 知识整理,vuepress 迁移中 https://theydy.github.io/notebook/
0 stars 0 forks source link

eslint 配置记录 #17

Open theydy opened 3 years ago

theydy commented 3 years ago

项目中初始化


# 项目中初始化 eslint
node_modules/.bin/eslint --init

# 修复全部 .ts 文件
node_modules/.bin/eslint --fix --ext .ts .

魔法注释


/* eslint-disable */
alert('该注释放在文件顶部,整个文件都不会出现 lint 警告')

/* eslint-enable */
alert('重新启用 lint 告警')

/* eslint-disable xxx */
alert('只禁止某一个或多个规则')

/* eslint-disable-next-line */
alert('当前行禁止 lint 警告')

alert('当前行禁止 lint 警告') // eslint-disable-line

eslint 配置文件

eslint 的配置文件可以有多种,比如初始化过程中提供的三个选项:

又或者可以直接在 package.json 中添加 eslintConfig 配置字段

eslint 配置文件的优先级如下:


const configFilenames = [
  ".eslintrc.js",
  ".eslintrc.yaml",
  ".eslintrc.yml",
  ".eslintrc.json",
  ".eslintrc",
  "package.json"
];

基本配置模板


{
    "extends": "eslint:recommended", // 继承
    "rules": {
        "semi": ["error", "always"], // 必须行尾加分号
        "quotes": ["error", "single"], // 强制使用单引号
        "indent": ["error", 2, {
          "VariableDeclarator": "first", // 多变量声明换行时,所有声明符与第一个声明符对其
        }], // 强制缩进空格个数
        "jsx-quotes": ["error", "prefer-double"], // jsx 中强制使用双引号
        "arrow-parens": ["error", "always"], // 箭头函数无论参数个数必须使用括号
        "comma-dangle": ["error", { // 使用拖尾逗号
            "arrays": "always-multiline", // 单行不加,多行必须加拖尾逗号
            "objects": "always-multiline",
            "imports": "always-multiline",
            "exports": "always-multiline",
            "functions": "only-multiline" // 单行不加,多行可加可不加拖尾逗号
        }], // 多行时必须使用拖尾逗号
        "no-multi-spaces": ["error", { "ignoreEOLComments": false }], // 除了注释,否则不允许使用连续多个空格
        "object-property-newline": ["error", { "allowAllPropertiesOnSameLine": true }], // 对象属性必须放在不同行上,除非所有属性都在同一行上
        "space-before-function-paren": ["error", { // 定义声明函数参数()左边必须有空格
          "anonymous": "always",
          "named": "always",
          "asyncArrow": "always"
        }],
        "space-infix-ops": ["error", {"int32Hint": false}], // 中缀运算符周围必须有空格
        "space-unary-ops": [ // 一元操作符周围是否要空格,一元操作符不同与运算符
          "error", {
            "words": true, // new、delete、typeof、void、yield 周围必须要空格
            "nonwords": false, // -、+、--、++、!、!! 周围必须不要空格
        }],
        "arrow-spacing": ["error", { "before": true, "after": true }], // 箭头函数箭头前后必须有空格
        "no-var": ["error"], // 禁止使用 var
        "block-spacing": ["error", "always"], // 强制在代码块中开括号前和闭括号后有空格
        "space-before-blocks": ["error", "always"], // 块语句前必须有空格
        "keyword-spacing": ["error", { "before": true, "after": true }], // 强制关键字周围空格的一致性
        "array-callback-return": ["error", { "allowImplicit": true }], // 强制数组方法的回调函数中有 return
        "func-call-spacing": ["error", "never"], // 禁止在函数标识符和其调用之间有空格
        // "off" or 0 - 关闭规则
        // "warn" or 1 - 将规则视为一个警告(不会影响退出码)
        // "error" or 2 - 将规则视为一个错误 (退出码为1)
    }
}