{
    "prettier/prettier": {
        "name": "prettier/prettier",
        "value": [
            "error",
            {},
            {
                "fileInfoOptions": {
                    "withNodeModules": true
                }
            }
        ],
        "description": "样式规则委托prettier进行管理",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "no-debugger": {
        "name": "no-debugger",
        "value": "off",
        "description": "禁止使用 debugger",
        "reason": "",
        "badExample": "<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>foo<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <mark class=\"eslint-error\" data-tip=\"Unexpected &amp;apos;debugger&amp;apos; statement.<br/><span class='eslint-error-rule-id'>eslint(no-debugger)</span>\"><span class=\"token keyword\">debugger</span><span class=\"token punctuation\">;</span></mark>\n<span class=\"token punctuation\">}</span>",
        "goodExample": "<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>foo<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// debugger;</span>\n<span class=\"token punctuation\">}</span>",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "no-unused-vars": {
        "name": "no-unused-vars",
        "value": "off",
        "description": "js 中关闭未使用变量检测",
        "reason": "",
        "badExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "max-depth": {
        "name": "max-depth",
        "value": ["error", 5],
        "description": "代码块嵌套的深度禁止超过 5 层",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "global-require": {
        "name": "global-require",
        "value": "off",
        "description": "NodeJs rules,9.0之后全部使用import,关闭require()强制在模块顶部调用",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "prefer-const": {
        "name": "prefer-const",
        "value": "error",
        "description": "申明后不再被修改的变量必须使用 const 来申明",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": true,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "object-curly-newline": {
        "name": "object-curly-newline",
        "value": "off",
        "description": "关闭强制在花括号内使用一致的换行符",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": true,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "new-cap": {
        "name": "new-cap",
        "value": ["error", { "newIsCap": true, "capIsNew": false, "properties": true }],
        "description": "new 后面的类名必须首字母大写",
        "reason": "",
        "badExample": "<span class=\"token keyword\">new</span> <span class=\"token class-name\"><mark class=\"eslint-error\" data-tip=\"A constructor name should not start with a lowercase letter.<br/><span class='eslint-error-rule-id'>eslint(new-cap)</span>\">foo</mark></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">new</span> <span class=\"token class-name\">foo<span class=\"token punctuation\">.</span><mark class=\"eslint-error\" data-tip=\"A constructor name should not start with a lowercase letter.<br/><span class='eslint-error-rule-id'>eslint(new-cap)</span>\">bar</mark></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>",
        "goodExample": "<span class=\"token keyword\">new</span> <span class=\"token class-name\">Foo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">new</span> <span class=\"token class-name\">foo<span class=\"token punctuation\">.</span>Bar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">Foo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "click-events-have-key-events": {
        "name": "click-events-have-key-events",
        "value": "off",
        "description": "关闭点击元素上强制增加onKey**事件",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": true,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "radix": {
        "name": "radix",
        "value": "off",
        "description": "parseInt 必须传入第二个参数, TS会自动校正，所以关闭",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "function-paren-newline": {
        "name": "function-paren-newline",
        "value": ["error", "consistent"],
        "description": "consistent: 要求每对圆括号一致地使用换行符。如果该对中的一个括号内有换行符，而另一个括号中没有换行符，则会报告错误。",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "no-void": {
        "name": "no-void",
        "value": "off",
        "description": "使用void 0 代替 undefined",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "no-implicit-coercion": {
        "name": "no-implicit-coercion",
        "value": "off",
        "description": "允许使用简便的方式对值类型进行转换",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "object-curly-spacing": {
        "name": "object-curly-spacing",
        "value": ["error", "always"],
        "description": "降维使用花括号",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "handle-callback-err": {
        "name": "handle-callback-err",
        "value": "off",
        "description": "忽略错误回调，必须处理异常现象",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "no-useless-constructor": {
        "name": "no-useless-constructor",
        "value": "off",
        "description": "支持 empty constructor",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "prefer-promise-reject-errors": {
        "name": "prefer-promise-reject-errors",
        "value": "off",
        "description": "Project.reject 可以不使用 error",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "no-invalid-this":{
        "name": "no-invalid-this",
        "value": "off",
        "description": "不禁止使用 this",
        "reason": "支持在 class 中使用 this",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "react/jsx-filename-extension": {
        "name": "react/jsx-filename-extension",
        "value": ["error", { "extensions": [".tsx"] }],
        "description": "使用了jsx语法的js代码文件其扩展名可以使用js或jsx",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "react/prefer-stateless-function": {
        "name": "react/prefer-stateless-function",
        "value": ["error", { "ignorePureComponents": false }],
        "description": "无状态和没有使用生命周期的组件使用函数组件声明",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "react/jsx-one-expression-per-line": {
        "name": "react/jsx-one-expression-per-line",
        "value": "off",
        "description": "组件内部换行",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "react/sort-comp": {
        "name": "react/sort-comp",
        "value": [
            1,
            {
                "order": [
                    "static-methods",
                    "instance-variables",
                    "lifecycle",
                    "everything-else",
                    "render"
                ]
            }
        ],
        "description": "组件内方法必须按照一定规则排序",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "react/jsx-first-prop-new-line": {
        "name": "react/jsx-first-prop-new-line",
        "value": "off",
        "description": "第一个属性必须换行",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "react/jsx-curly-brace-presence": {
        "name": "react/jsx-curly-brace-presence",
        "value": "off",
        "description": "禁止jsx中使用无用的引号",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "react/jsx-no-useless-fragment": {
        "name": "react/jsx-no-useless-fragment",
        "value": "off",
        "description": "禁止无意义的 Fragment 组件",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "@typescript-eslint/no-empty-interface": {
        "name": "@typescript-eslint/no-empty-interface",
        "value": "off",
        "description": "是否检测空接口",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "@typescript-eslint/explicit-member-accessibility": {
        "name": "@typescript-eslint/explicit-member-accessibility",
        "value": "off",
        "description": "是否显示声明类成员的访问性, 使用React的成员顺序",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "@typescript-eslint/indent": {
        "name": "@typescript-eslint/indent",
        "value": "off",
        "description": "将代码缩进管理，委托 prettier 进行管理",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "@typescript-eslint/no-useless-constructor": {
        "name": "@typescript-eslint/no-useless-constructor",
        "value": "off",
        "description": "禁止出现没必要的 constructor, 自动模板生成的代码都是空的constructor",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "no-unused-expressions": {
        "name": "no-unused-expressions",
        "value": "off",
        "description": "no-unused-expressions 会跟typescript的链式可选链调用冲突",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "@typescript-eslint/no-unused-expressions": {
        "name": "@typescript-eslint/no-unused-expressions",
        "value": "error",
        "description": "禁止无用的表达式",
        "reason": "",
        "badExample": "<span class=\"token keyword\">declare</span> <span class=\"token keyword\">const</span> foo1<span class=\"token punctuation\">:</span> <span class=\"token builtin\">any</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">declare</span> <span class=\"token keyword\">const</span> bar1<span class=\"token punctuation\">:</span> <span class=\"token builtin\">any</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">declare</span> <span class=\"token keyword\">const</span> baz1<span class=\"token punctuation\">:</span> <span class=\"token builtin\">any</span><span class=\"token punctuation\">;</span>\n<mark class=\"eslint-error\" data-tip=\"Expected an assignment or function call and instead saw an expression.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/no-unused-expressions)</span>\"><span class=\"token number\">1</span><span class=\"token punctuation\">;</span></mark>\n<mark class=\"eslint-error\" data-tip=\"Expected an assignment or function call and instead saw an expression.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/no-unused-expressions)</span>\">foo1<span class=\"token punctuation\">;</span></mark>\n<mark class=\"eslint-error\" data-tip=\"Expected an assignment or function call and instead saw an expression.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/no-unused-expressions)</span>\"><span class=\"token punctuation\">(</span><span class=\"token string\">'foo1'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></mark>\n<mark class=\"eslint-error\" data-tip=\"Expected an assignment or function call and instead saw an expression.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/no-unused-expressions)</span>\">foo1 <span class=\"token operator\">&amp;&amp;</span> bar1<span class=\"token punctuation\">;</span></mark>\n<mark class=\"eslint-error\" data-tip=\"Expected an assignment or function call and instead saw an expression.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/no-unused-expressions)</span>\">foo1 <span class=\"token operator\">||</span> bar1<span class=\"token punctuation\">;</span></mark>\n<mark class=\"eslint-error\" data-tip=\"Expected an assignment or function call and instead saw an expression.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/no-unused-expressions)</span>\">foo1 <span class=\"token operator\">?</span> bar1 <span class=\"token punctuation\">:</span> baz1<span class=\"token punctuation\">;</span></mark>\n<mark class=\"eslint-error\" data-tip=\"Expected an assignment or function call and instead saw an expression.<br/><span class='eslint-error-rule-id'>eslint(@typescript-eslint/no-unused-expressions)</span>\"><span class=\"token template-string\"><span class=\"token string\">`bar1`</span></span><span class=\"token punctuation\">;</span></mark>",
        "goodExample": "<span class=\"token string\">'use strict'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">declare</span> <span class=\"token keyword\">const</span> foo2<span class=\"token punctuation\">:</span> <span class=\"token builtin\">any</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">declare</span> <span class=\"token keyword\">const</span> bar2<span class=\"token punctuation\">:</span> <span class=\"token builtin\">any</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">declare</span> <span class=\"token keyword\">const</span> baz2<span class=\"token punctuation\">:</span> <span class=\"token builtin\">any</span><span class=\"token punctuation\">;</span>\nfoo2 <span class=\"token operator\">&amp;&amp;</span> <span class=\"token function\">bar2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nfoo2 <span class=\"token operator\">||</span> <span class=\"token function\">bar2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nfoo2 <span class=\"token operator\">?</span> <span class=\"token function\">bar2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">:</span> <span class=\"token function\">baz2</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nfoo2<span class=\"token template-string\"><span class=\"token string\">`bar2`</span></span><span class=\"token punctuation\">;</span>",
        "fixable": false,
        "extendsBaseRule": "no-unused-expressions",
        "requiresTypeChecking": false
    },
    "@typescript-eslint/no-unused-vars": {
        "name": "@typescript-eslint/no-unused-vars",
        "value": "off",
        "description": "关闭禁止未使用过的变量,包括全局变量和函数中的最后一个参数必须使用",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "react-hooks/rules-of-hooks": {
        "name": "react-hooks/rules-of-hooks",
        "value": "error",
        "description": "",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    },
    "react-hooks/exhaustive-deps": {
        "name": "react-hooks/exhaustive-deps",
        "value": "warn",
        "description": "",
        "reason": "",
        "badExample": "",
        "goodExample": "",
        "fixable": false,
        "extendsBaseRule": "",
        "requiresTypeChecking": false
    }
}
