符合自身場景的就是最好的,但願能給大夥帶來參考javascript
上一篇說的詳細配置文件以下vue
{
"defaultSeverity": "error",
"extends": [
"tslint:recommended"
],
"jsRules": {
"no-unused-expression": true
},
"rules": {
"align": [
true,
"parameters",
"statements"
],
"array-type": false,
"arrow-parens": false,
"curly": true,
"eofline": false,
"forin": true,
"indent": [
true,
"spaces",
4
],
"interface-name": [
true,
"always-prefix"
],
"label-position": true,
"linebreak-style": [
true,
"CRLF"
],
"max-classes-per-file": [
false
],
"max-file-line-count": [
true,
1000
],
"max-line-length": [
true,
160
],
"member-access": [
true,
"check-accessor"
],
"member-ordering": [
false
],
"new-parens": true,
"no-consecutive-blank-lines": true,
"no-console": [
true,
"log",
"error"
],
"no-construct": true,
"no-debugger": true,
"no-duplicate-variable": [
true,
"check-parameters"
],
"no-empty": [
true,
"allow-empty-catch"
],
"no-empty-interface": false,
"no-eval": true,
"no-invalid-this": [
true,
"check-function-in-method"
],
"no-shadowed-variable": [
true,
{
"class": true,
"enum": true,
"function": true,
"interface": false,
"namespace": true,
"typeAlias": false,
"typeParameter": false
}
],
"no-switch-case-fall-through": true,
"no-trailing-whitespace": [
true,
"ignore-jsdoc",
"ignore-comments",
"ignore-blank-lines"
],
"no-unused-expression": [
true,
"allow-fast-null-checks"
],
"no-unused-variable": [
true,
{
"ignore-pattern": "^_"
}
],
"no-use-before-declare": true,
"no-var-keyword": true,
"object-literal-key-quotes": [
true,
"as-needed"
],
"object-literal-sort-keys": false,
"one-line": false,
"one-variable-per-declaration": [
true,
"ignore-for-loop"
],
"no-duplicate-super": true,
"no-return-await": true,
"prefer-const": [
true,
{
"destructuring": "all"
}
],
"quotemark": [
true,
"single",
"avoid-escape",
"avoid-template"
],
"radix": true,
"semicolon": [
true,
"always"
],
"switch-default": true,
"trailing-comma": false,
"triple-equals": [
true,
"allow-undefined-check"
],
"variable-name": [
true,
"allow-pascal-case"
],
"no-string-literal": false,
"no-require-imports": true,
"only-arrow-functions": [
true,
"allow-declarations",
"allow-named-functions"
],
"jsdoc-format": [
true,
"check-multiline-start"
],
"switch-final-break": [
true,
"always"
]
},
"rulesDirectory": []
}
複製代碼
----------------------------------我是分割線 咔 咔 咔 咔----------------------------------java
module.exports = {
// 全局變量
'env': {
'browser': true,
'commonjs': true,
'es6': true,
'node': true,
'worker': true,
'jquery': true
},
'extends': [
"standard",
"eslint:recommended",
"plugin:react/recommended",
"plugin:vue/base",
],
'parserOptions': {
"parser": "babel-eslint",
'ecmaFeatures': {
// 啓用對實驗性的 object rest/spread properties 的支持。
'experimentalObjectRestSpread': true,
'jsx': true,
'globalReturn': false,
// 啓用全局 strict mode
'impliedStrict': true
},
// 設置爲 'script' (默認) 或 'module'(若是你的代碼是 ECMAScript 模塊)。
'sourceType': 'module',
// 設置爲 3, 5 (默認), 六、7 或 8 指定你想要使用的 ECMAScript 版本。你也能夠指定爲 2015(同 6),2016(同 7),或 2017(同 8)使用年份命名
'ecmaVersion': 7
},
'plugins': [
],
'rules': {
/* * ------------------------------------------------ * Possible Errors * 如下規則與 JavaScript 代碼中可能的錯誤或邏輯錯誤有關 * ------------------------------------------------ */
//react 相關配置項
"react/forbid-prop-types": [0],
"react/jsx-filename-extension": [1, { "extensions": [".js"] }],
"react/jsx-no-bind": [0],
"react/jsx-indent": [2, 4],
"react/jsx-indent-props": [2, 4],
"react/jsx-uses-react": "error",
"react/jsx-uses-vars": "error",
"react/prop-types": [0],
"react/prefer-stateless-function": [0],
"react/jsx-wrap-multilines": [
"error",
{
"declaration": "parens-new-line",
"assignment": "parens-new-line",
"return": "parens-new-line",
"arrow": "parens-new-line",
"condition": "parens-new-line",
"logical": "parens-new-line",
"prop": "ignore"
}
],
"jsx-a11y/no-static-element-interactions": [0],
"jsx-a11y/no-noninteractive-element-interactions": [0],
"jsx-a11y/click-events-have-key-events": [0],
"jsx-a11y/anchor-is-valid": [0],
// 禁止在常規字符串中出現模板字面量佔位符語法
'no-template-curly-in-string': 1,
// error; for循轉方向出錯
'for-direction': 2,
// error; getter必須有返回值,而且禁止返回值爲undefined, 好比 return;
'getter-return': [2, { 'allowImplicit': false }],
// error; 禁止在循環中出現 await
'no-await-in-loop': 2,
// error; 不容許使用console進行代碼調試
'no-console': 2,
// error; 不容許使用debugger進行代碼調試
'no-debugger': 2,
/* * ------------------------------------------------ * Best Practices * 這些規則是關於最佳實踐的,幫助你避免一些問題 * ------------------------------------------------ */
// error; 強制 getter 和 setter 在對象中成對出現
'accessor-pairs': 2,
// off; 對於數據相關操做函數好比reduce, map, filter等,callback必須有return
'array-callback-return': 0,
// error; 把var關鍵字當作塊級做用域,防止變量提高致使的bug
'block-scoped-var': 2,
// error; class this
'class-methods-use-this': 0,
// error; 禁止或強制在計算屬性中使用空格
'computed-property-spacing': [2, 'never'],
// error; 要求遵循大括號約定
'curly': [2, 'all'],
// error; switch case語句裏面必定須要default分支
'default-case': 2,
// error; 要求點操做符和屬性放在同一行
'dot-location': [2, 'property'],
// warn; 推薦.操做符
'dot-notation': [1, { 'allowKeywords': false }],
// error; === !==
'eqeqeq': 2,
// error; 禁止使用看起來像除法的正則表達式
'no-div-regex': 2,
// error; 禁止在 else 前有 return
'no-else-return': 2,
// error; 不容許使用空函數,除非在空函數裏面給出註釋說明
'no-empty-function': 2,
// error; if (foo === null)
'no-eq-null': 2,
// error; 代碼中不容許使用eval
'no-eval': 2,
// error; 禁止修改原生對象
'no-extend-native': [2, { 'exceptions': ['Object', 'Promise'] }],
// error; 禁止出現不必的 bind
'no-extra-bind': 2,
// error; 表示小數時,禁止省略 0,好比 .5
'no-floating-decimal': 2,
// error; 強制類型轉換
'no-implicit-coercion': [2, { 'boolean': false, 'string': false }],
// this關鍵字出如今類和類對象以外 todo
'no-invalid-this': 1,
// error; 禁止使用相似 eval() 的方法
'no-implied-eval': 2,
// error; 禁止使用 __iterator__
'no-iterator': 2,
// error; 禁用標籤語句
'no-labels': 2,
// error; 禁止循環中存在函數
'no-loop-func': 2,
// error; 禁止使用不必的 {} 做爲代碼塊
'no-lone-blocks': 2,
// error; 禁止出現連續的多個空格,除非是註釋前,或對齊對象的屬性、變量定義、import 等
'no-multi-spaces': [2, {
'ignoreEOLComments': true,
'exceptions': { 'Property': true, 'BinaryExpression': false, 'VariableDeclarator': true, 'ImportDeclaration': true }
}],
// error; 禁止多行字符串
'no-multi-str': 2,
// error; 禁止直接 new 一個類而不賦值
'no-new': 2,
// error; 禁止使用 new Function,好比 const expression = new Function('a', 'b', 'return a + b');
'no-new-func': 2,
// error; 對於JS的原始類型好比String, Number, Boolean等,不容許使用new 操做符
'no-new-wrappers': 2,
// warn; 不推薦對 function 的參數進行從新賦值
'no-param-reassign': 1,
// error; 禁止直接使用__proto__屬性,可使用getPrototypeOf替代
'no-proto': 2,
// error; 禁止在 return 語句中使用賦值語句
'no-return-assign': 2,
// error; 禁止在 return 語句中使用await
'no-return-await': 2,
// warn; 不推薦逗號操做符
'no-sequences': 1,
// error; 禁止拋出異常字面量
'no-throw-literal': 2,
// error; 禁用一成不變的循環條件
'no-unmodified-loop-condition': 2,
// error; 禁止出現未使用過的表達式
'no-unused-expressions': 2,
// error; 禁止沒必要要的 .call() 和 .apply()
'no-useless-call': 2,
// error; 禁止出現不必的字符串拼接,好比 'hello' + 'world',能夠直接寫成'hello world'
'no-useless-concat': 2,
// error; disallow redundant return statements
'no-useless-return': 2,
// 禁用 Alert
'no-alert': 2,
// 禁用 Script URL
'no-script-url': 2,
// error; 對數字使用 parseInt 而且老是帶上類型轉換的基數
'radix': 2,
// error; async函數裏面必須有await
'require-await': 0,
// error; 要求全部的 var 聲明出如今它們所在的做用域頂部
'vars-on-top': 2,
// warn; 推薦yoda表達式
'yoda': [1, 'always'],
// 須要約束 for-in
'guard-for-in': 2,
/* * ------------------------------------------------ * Variables * 這些規則與變量聲明有關 * ------------------------------------------------ */
// error; 禁止 catch 子句的參數與外層做用域中的變量同名
'no-catch-shadow': 2,
// error; 禁用特定的全局變量
'no-restricted-globals': 2,
// error; 禁止變量聲明與外層做用域的變量同名
'no-shadow': 2,
// error; js關鍵字和保留字不能做爲函數名或者變量名
'no-shadow-restricted-names': 2,
// error; 禁止label名稱和var相同
'no-label-var': 2,
// error; 避免初始化變量值爲 undefined
'no-undef-init': 2,
// error; 禁止將undefined當成標誌符
'no-undefined': 2,
// error; 變量使用以前必須進行定義,函數除外
'no-use-before-define': [2, { 'functions': false }],
/* * ------------------------------------------------ * Stylistic Issues * 這些規則是關於風格指南的,並且是很是主觀的 * ------------------------------------------------ */
// error; 是否容許非空數組裏面有多餘的空格
'array-bracket-spacing': [2, 'never'],
// warn; 大括號風格
'brace-style': [1, '1tbs'],
// error; 變量命名須要以駝峯命名法,對屬性字段不作限制
'camelcase': [2, { 'properties': 'never' }],
// error; 對象字面量項尾不能有逗號
'comma-dangle': [2, 'never'],
// error; 逗號風格,換行時在行首仍是行尾
'comma-style': [2, 'last'],
// error; 當獲取當前執行環境的上下文時,強制使用一致的命名
'consistent-this': [2, 'self', 'that'],
// error; 函數名和執行它的括號之間禁止有空格
'func-call-spacing': [2, 'never'],
// error; 強制一致地使用 function 聲明或表達式
'func-style': [2, 'declaration', { 'allowArrowFunctions': true }],
// error; 一個縮進必須用四個空格替代, switch語句裏面的case 2個空格
'indent': [2, 4, { 'SwitchCase': 2 }],
// error; 對象字面量中冒號前面禁止有空格,後面必須有空格
'key-spacing': [2, { 'beforeColon': false, 'afterColon': true, 'mode': 'strict' }],
// error; 關鍵字先後必需要加上空格
'keyword-spacing': [2, { 'before': true, 'after': true }],
// off; 不限制註釋位置
'line-comment-position': 0,
// error; 換行符
'linebreak-style': [2, 'windows'],
// warn; 註釋前有一空行
'lines-around-comment': [1, { 'beforeBlockComment': true, 'beforeLineComment': true }],
// error; 強制可嵌套的塊的最大深度
'max-depth': [2, { max: 4 }],
// warn; 單行最多容許160個字符, 對包含url的行不進行此限制
'max-len': [1, { 'code': 160, 'ignoreUrls': true, 'ignoreComments': true, 'ignoreStrings': true, 'ignoreTemplateLiterals': true, 'ignoreRegExpLiterals': true }],
// warn; 強制回調函數最大嵌套深度
'max-nested-callbacks': [2, { 'max': 3 }],
// error; 構造函數的必須以大寫字母開頭
'new-cap': 2,
// error; new 後面類必須帶上括號
'new-parens': 2,
// error; 禁止使用 Array 構造函數
'no-array-constructor': 2,
// error; no continue
'no-continue': 2,
// error; 禁止 if 語句做爲惟一語句出如今 else 語句塊中
'no-lonely-if': 2,
// warn; 不容許多個空行
'no-multiple-empty-lines': [1, { 'max': 1 }],
// error; 禁止使用嵌套的三元表達式
'no-nested-ternary': 2,
// error; 禁用 Object 的構造函數
'no-new-object': 2,
// error; 強制在花括號內使用一致的換行符
'object-curly-newline': [2, { 'multiline': true }],
// error; 強制將對象的屬性放在不一樣的行上
'object-property-newline': 2,
// error; 變量申明必須每行一個
'one-var': [2, 'never'],
// warn; 變量申明必須每行一個
'one-var-declaration-per-line': [2, 'always'],
// error; 換行時運算符在行尾仍是行首
'operator-linebreak': [2, 'after'],
// warn; 句柄padding
'padding-line-between-statements': [1, { blankLine: 'always', prev: ['const', 'let', 'var'], next: '*' }, { blankLine: 'any', prev: ['const', 'let', 'var'], next: ['const', 'let', 'var'] }],
// error; 必須使用單引號
'quotes': [2, 'single', { 'avoidEscape': true, 'allowTemplateLiterals': true }],
// warn; 推薦jsdoc註釋
'require-jsdoc': [1, { 'require': { 'FunctionDeclaration': true, 'MethodDefinition': false, 'ClassDeclaration': false, 'ArrowFunctionExpression': false } }],
// error; 結尾必須有分號
'semi': [2, 'always'],
// error; 一行有多個語句時,分號前面禁止有空格,分號後面必須有空格
'semi-spacing': [2, { 'before': false, 'after': true }],
// error; 分號必須寫在行尾,禁止在行首出現
'semi-style': [2, 'last'],
// error; if, function 等的大括號以前必需要有空格
'space-before-blocks': [2, 'always'],
// error; 註釋空格
'spaced-comment': [2, 'always', { 'line': { 'markers': ['/'], 'exceptions': ['-', '+'] }, 'block': { 'markers': ['!'], 'exceptions': ['*'], 'balanced': true } }],
// error; case 子句冒號前禁止有空格,冒號後必須有空格
'switch-colon-spacing': [2, { 'after': true, 'before': false }],
// 鏈式調用必須換行
'newline-per-chained-call': 2,
/* * ------------------------------------------------ * ECMAScript 6 * 這些規則只與 ES6 有關 * ------------------------------------------------ */
// error; 箭頭函數的箭頭先後必須有空格
'arrow-spacing': [2, { 'before': true, 'after': true }],
// error; 禁止import重複模塊
'no-duplicate-imports': 2,
// error; 要求使用 let 或 const 而不是 var
'no-var': 2,
// warn; 推薦使用箭頭函數做爲回調
'prefer-arrow-callback': [1, { 'allowNamedFunctions': true }],
// error; 使用const
'prefer-const': [2, { 'destructuring': 'any', 'ignoreReadBeforeAssign': false }],
// warn; 推薦結構賦值
'prefer-destructuring': [1, { 'array': true, 'object': true }, { 'enforceForRenamedProperties': false }],
// warn; 推薦rest運算符
'prefer-rest-params': 1,
// warn; 推薦擴展運算符
'prefer-spread': 1,
// error; rest 空格
'rest-spread-spacing': [2, 'never'],
// error; require symbol description
'symbol-description': 2,
// 禁止在對象中使用沒必要要的計算屬性
'no-useless-computed-key': 1,
// 禁用沒必要要的構造函數
'no-useless-constructor': 2
}
};
複製代碼