// .eslintrc.json
{
"env": {
"browser": true,
"node": true,
"commonjs": true
},
"plugins": [
"react"
],
//"parser": "babel-eslint", // 必须指定解析器,否则错误难消
// 0 或 'off':关闭规则。
// 1 或 'warn':打开规则,并且作为一个警告(并不会导致检查不通过)。
// 2 或 'error':打开规则,并且作为一个错误 (退出码为1,检查不通过)。
"rules": {
// 定义对象的set存取器属性时,强制定义get
"accessor-pairs": 2,
// 禁止或强制在括号内使用空格
// 指定数组的元素之间要以空格隔开(,后面), never参数:[ 之前和 ] 之后不能带空格,always参数:[ 之前和 ] 之后必须带空格
"array-bracket-spacing": [2, "never"],
// 在块级作用域外访问块内定义的变量是否报错提示
"block-scoped-var": 0,
// if while function 后面的{必须与if在同一行,java风格。
"brace-style": [2, "1tbs", { "allowSingleLine": true }],
// 双峰驼命名格式
"camelcase": 2,
// 数组和对象键值对最后一个逗号, never参数:不能带末尾的逗号, always参数:必须带末尾的逗号,
// always-multiline:多行模式必须带逗号,单行模式不能带逗号
"comma-dangle": [2, "never"],
// 控制逗号前后的空格
"comma-spacing": [2, { "before": false, "after": true }],
// 控制逗号在行尾出现还是在行首出现
// http://eslint.org/docs/rules/comma-style
"comma-style": [2, "last"],
// 圈复杂度
"complexity": [2,12],
// 以方括号取对象属性时,[ 后面和 ] 前面是否需要空格, 可选参数 never, always
"computed-property-spacing": [2,"never"],
// 强制方法必须返回值,TypeScript强类型,不配置
"consistent-return": 0,
// 用于指统一在回调函数中指向this的变量名,箭头函数中的this已经可以指向外层调用者,应该没卵用了
// e.g [0,"that"] 指定只能 var that = this. that不能指向其他任何值,this也不能赋值给that以外的其他值
"consistent-this": 0,
// 强制在子类构造函数中用super()调用父类构造函数,TypeScrip的编译器也会提示
"constructor-super": 0,
// if else while for do后面的代码块是否需要{ }包围,参数:
// multi 只有块中有多行语句时才需要{ }包围
// multi-line 只有块中有多行语句时才需要{ }包围, 但是块中的执行语句只有一行时,
// 块中的语句只能跟和if语句在同一行。if (foo) foo++; else doSomething();
// multi-or-nest 只有块中有多行语句时才需要{ }包围, 如果块中的执行语句只有一行,执行语句可以零另起一行也可以跟在if语句后面
// [2, "multi", "consistent"] 保持前后语句的{ }一致
// default: [2, "all"] 全都需要{ }包围
"curly": [2, "all"],
// switch语句强制default分支,也可添加 // no default 注释取消此次警告
"default-case": 2,
// 强制object.key 中 . 的位置,参数:
// property,'.'号应与属性在同一行
// object, '.' 号应与对象名在同一行
"dot-location": [2, "property"],
// 强制使用.号取属性
// 参数: allowKeywords:true 使用保留字做属性名时,只能使用.方式取属性
// false 使用保留字做属性名时, 只能使用[]方式取属性 e.g [2, {"allowKeywords": false}]
// allowPattern: 当属性名匹配提供的正则表达式时,允许使用[]方式取值,否则只能用.号取值 e.g [2, {"allowPattern": "^[a-z]+(_[a-z]+)+$"}]
"dot-notation": [2, {"allowKeywords": true}],
// 文件末尾强制换行
"eol-last": 2,
// 使用 === 替代 ==
"eqeqeq": [2, "allow-null"],
// 方法表达式是否需要命名
"func-names": 0,
// 方法定义风格,参数:
// declaration: 强制使用方法声明的方式,function f(){} e.g [2, "declaration"]
// expression:强制使用方法表达式的方式,var f = function() {} e.g [2, "expression"]
// allowArrowFunctions: declaration风格中允许箭头函数。 e.g [2, "declaration", { "allowArrowFunctions": true }]
"func-style": 0,
"generator-star-spacing": [2, { "before": true, "after": true }],
"guard-for-in": 0,
// 强制回调错误处理
"handle-callback-err": [2, "^(err|error)$" ],
// 强制使用一致的缩进
"indent": [2, 4, { "SwitchCase": 1 }],
// 强制在对象字面量的键和值之间使用一致的空格
"key-spacing": [2, { "beforeColon": true, "afterColon": true }],
// keyword-spacing 强制关键字周围空格的一致性
// "before": true (默认) 要求在关键字之前至少有一个空格
// "before": false 禁止在关键字之前有空格
// "after": true (默认) 要求在关键字之后至少有一个空格
// "after": false 禁止在关键字之后有空格
// "overrides" 允许覆盖指定的关键字的空格风格
"keyword-spacing":[2,{"before": true, "after": true }],
"linebreak-style": 0,
"lines-around-comment": 0,
"max-nested-callbacks": 0,
// 要求构造函数首字母大写
"new-cap": [2, { "newIsCap": true, "capIsNew": true }],
// 要求调用无参构造函数时带括号
"new-parens": 2,
"newline-after-var": 0,
// 禁用 alert alert、prompt 和 confirm 时,该规则将发出警告。
"no-alert": 2,
// 禁止使用 Array 构造函数
"no-array-constructor": 2,
// 禁用 caller 或 callee
"no-caller": 2,
// 不允许在 catch 语句中遮盖变量
"no-catch-shadow": 2,
// 禁止在条件语句中出现赋值操作符
"no-cond-assign": 2,
// 禁用 console
"no-console": 2,
// 禁止在条件中使用常量表达式
"no-constant-condition": 2,
// 禁用 continue
"no-continue": 2,
// 禁止在正则表达式中使用控制字符
"no-control-regex": 2,
// 禁用 debugger
"no-debugger": 2,
// 禁止删除变量
// delete 的目的是删除对象的属性。使用 delete 操作删除一个变量可能会导致意外情况发生
"no-delete-var": 2,
// 禁止使用看起来像除法的正则表达式
// function bar() { return /=foo/; } 错误
// function bar() { return /\=foo/; }正确
"no-div-regex": 2,
// 禁止在 function 定义中出现重复的参数
"no-dupe-args": 2,
// 禁止在对象字面量中出现重复的键
"no-dupe-keys": 2,
// 禁止重复 case 标签
"no-duplicate-case": 2,
// 禁止在 else 前有 return
"no-else-return": 2,
// 禁止空块语句
"no-empty": 0,
// 禁止在正则表达式中出现空字符集
"no-empty-character-class": 2,
// 禁止与 null 进行比较
"no-eq-null": 2,
// 禁用 eval()
"no-eval": 2,
// 禁止对 catch 子句中的异常重新赋值
"no-ex-assign": 2,
// 禁止扩展原生对象
"no-extend-native": 2,
// 禁止不必要的函数绑定
"no-extra-bind": 2,
// 禁止不必要的布尔类型转换
"no-extra-boolean-cast": 2,
// 禁止冗余的括号
"no-extra-parens": 2,
// 禁用不必要的分号
"no-extra-semi": 2,
// 禁止 case 语句落空
"no-fallthrough": 2,
// 禁止浮点小数
"no-floating-decimal": 2,
// 禁止对 function 声明重新赋值
"no-func-assign": 2,
// 禁用隐式的eval()
"no-implied-eval": 2,
// 禁止使用内联注释
"no-inline-comments": 2,
// 禁止在嵌套的语句块中出现变量或 function 声明
"no-inner-declarations": [2, "functions"],
// 禁止在 RegExp 构造函数中出现无效的正则表达式
"no-invalid-regexp": 2,
// 禁止不规则的空白
"no-irregular-whitespace": 2,
// 禁用迭代器
"no-iterator": 2,
// 禁用与变量同名的标签
"no-label-var": 2,
// no-labels 规则旨在消除 JavaScript 中标签的使用。当遇到标签语句时,该规则将发出警告。
/**
* 示例: 标签语句
outer:
while (true) {
while (true) {
break outer;
}
}
*/
"no-labels": 2,
// 禁用不必要的嵌套块
"no-lone-blocks": 2,
// 禁止 if 语句作为唯一语句出现在 else 语句块中
"no-lonely-if": 2,
// 禁止循环中存在函数
"no-loop-func": 2,
// 禁止 require 调用与普通变量声明混合使用
"no-mixed-requires": 2,
// 禁止使用 空格 和 tab 混合缩进
"no-mixed-spaces-and-tabs": 2,
// 禁止出现多个空格
"no-multi-spaces": 2,
// 禁止多行字符串
"no-multi-str": 2,
// 不允许多个空行
"no-multiple-empty-lines": [2, { "max": 1 }],
// 现版本已经作废
"no-native-reassign": 2,
// 替代 no-unsafe-negation
"no-negated-in-lhs": 2,
"no-nested-ternary": 0,
"no-new": 2,
"no-new-func": 0,
"no-new-object": 2,
"no-new-require": 2,
"no-new-wrappers": 2,
"no-obj-calls": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-param-reassign": 0,
"no-path-concat": 0,
"no-process-env": 0,
"no-process-exit": 0,
"no-proto": 0,
"no-redeclare": 2,
"no-regex-spaces": 2,
"no-restricted-modules": 0,
"no-return-assign": 2,
"no-script-url": 0,
"no-self-compare": 2,
"no-sequences": 2,
"no-shadow": 0,
"no-shadow-restricted-names": 2,
"no-spaced-func": 2,
"no-sparse-arrays": 2,
"no-sync": 0,
"no-ternary": 0,
"no-this-before-super": 2,
"no-throw-literal": 2,
// 禁用行尾空白
"no-trailing-spaces": 2,
// 禁用未声明的变量
"no-undef": 2,
"no-undef-init": 2,
"no-undefined": 0,
"no-underscore-dangle": 0,
"no-unexpected-multiline": 2,
"no-unneeded-ternary": 2,
"no-unreachable": 2,
"no-unused-expressions": 0,
// 禁止未使用过的变量
"no-unused-vars": [1, { "vars": "all", "args": "none" }],
// 禁止定义前使用
"no-use-before-define": 2,
"no-var": 0,
"no-void": 0,
"no-warning-comments": 0,
"no-with": 2,
"object-curly-spacing": 0,
"object-shorthand": 0,
// 强制函数中的变量在一起声明或分开声明
"one-var": [2, { "initialized": "never" }],
"operator-assignment": 0,
"operator-linebreak": [2, "after", { "overrides": { "?": "before", ":": "before" } }],
"padded-blocks": 0,
"prefer-const": 0,
"quote-props": 0,
// 字符串使用单引号 single、double、
// "double" (默认) 要求尽可能地使用双引号
// "single" 要求尽可能地使用单引号
// "backtick" 要求尽可能地使用反勾号
// "avoidEscape": true 允许字符串使用单引号或双引号,只要字符串中包含了一个其它引号,否则需要转义
"quotes": [2, "double", "avoid-escape"],
// 要求必须有基数 var num = parseInt("071", 10); // 71
"radix": 2,
// "always" (默认) 要求在语句末尾使用分号
// "never" 禁止在语句末尾使用分号 (除了消除以 [、(、/、+ 或 - 开始的语句的歧义)
// "omitLastInOneLineBlock":ture 忽略花括号在同一行(内容也就在同一行了)的语句块中的最后一个分号
"semi": [2, "always", {"omitLastInOneLineBlock": true}],
// 这个是默认选项,它强制分号之后有空格,禁止分号之前有空格。
"semi-spacing": [2, {"before": false, "after": true}],
"sort-vars": 0,
// 要求或禁止语句块之前的空格
"space-before-blocks": [2, "always"],
// 要求或禁止函数圆括号之前有一个空格
// always (默认) 要求在参数的 ( 前面有一个空格。
// never 禁止在参数的 ( 前面有空格。
"space-before-function-paren": [2, "never"],
"space-in-parens": [2, "never"],
// 要求中缀操作符周围有空格
"space-infix-ops": 1,
"space-unary-ops": [2, { "words": true, "nonwords": false }],
//要求或禁止在注释前有空白
"spaced-comment": [2, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!"] }],
// "safe" (默认) 对应下面的选项:
// "global" 如果 ESLint 认为一个文件是 CommonJS 模块
// "function" 如果 ESLint 认为一个文件不是 CommonJS 模块
// "global" 要求在全局作用域下有一个严格模式指令(不允许任何其它严格模式指令)
// "function" 要求在函数声明或表达式开始位置有一个严格模式指令(不允许任何其它严格模式指令)
// "never" 禁用严格模式指令
"strict": [2, "safe"],
"use-isnan": 2,
"valid-jsdoc": 0,
"valid-typeof": 2,
"vars-on-top": 0,
"wrap-iife": [2, "any"],
"wrap-regex": 0,
"yoda": [2, "never"]
}
}
// package.json
{
"name": "xiaomickts",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "node-sass scss -w -o css"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-eslint": "^8.2.2",
"eslint": "^4.19.1",
"eslint-plugin-react": "^7.7.0",
"node-sass": "^4.8.3"
}
}