module.exports = {
	root: true,
	env: {
		node: true
	},
	extends: ["plugin:vue/essential", "eslint:recommended", "plugin:prettier/recommended"],
	parserOptions: {
		parser: "@babel/eslint-parser"
	},
	rules: {
		"no-cond-assign": 2, // 禁止条件表达式中出现模棱两可的赋值操作符
		"no-console": 2, // 禁用console
		"no-constant-condition": 2, // 禁止在条件中使用常量表达式
		"no-debugger": 2, // 禁用 debugger
		"no-dupe-args": 2, // 禁止 function 定义中出现重名参数
		"no-dupe-keys": 2, // 禁止对象字面量中出现重复的 key
		"no-duplicate-case": 2, // 禁止出现重复的 case 标签
		"no-empty": 2, // 禁止出现空语句块
		"no-ex-assign": 2, // 禁止对 catch 子句的参数重新赋值
		"no-extra-boolean-cast": 2, // 禁止不必要的布尔转换
		"no-extra-parens": 2, // 禁止不必要的括号
		"no-extra-semi": 2, // 禁止不必要的分号
		"no-func-assign": 2, // 禁止对 function 声明重新赋值
		"no-inner-declarations": 2, // 禁止在嵌套的块中出现变量声明或 function 声明
		"no-irregular-whitespace": 2, // 禁止在字符串和注释之外不规则的空白
		"no-obj-calls": 2, // 禁止把全局对象作为函数调用
		"no-sparse-arrays": 2, // 禁用稀疏数组
		"no-prototype-builtins": 2, // 禁止直接使用Object.prototypes 的内置属性
		"no-unexpected-multiline": 2, // 禁止出现令人困惑的多行表达式
		"no-unreachable": 2, // 禁止在return、throw、continue 和 break语句之后出现不可达代码
		"use-isnan": 2, // 要求使用 isNaN() 检查 NaN
		"valid-typeof": 2, // 强制 typeof 表达式与有效的字符串进行比较
		"array-callback-return": 2, // 强制数组方法的回调函数中有 return 语句
		"block-scoped-var": 2, // 强制把变量的使用限制在其定义的作用域范围内
		complexity: 2, // 指定程序中允许的最大环路复杂度
		"consistent-return": 2, // 要求 return 语句要么总是指定返回的值，要么不指定
		curly: 2, // 强制所有控制语句使用一致的括号风格
		"default-case": 2, // 要求 switch 语句中有 default 分支
		//"dot-location": 2, // 强制在点号之前和之后一致的换行
		"dot-notation": 0, // 强制在任何允许的时候使用点号
		eqeqeq: 2, // 要求使用 === 和 !==
		//"guard-for-in": 2, // 要求 for-in 循环中有一个 if 语句
		"no-alert": 2, // 禁用 alert、confirm 和 prompt
		"no-case-declarations": 2, // 不允许在 case 子句中使用词法声明
		//"no-else-return": 2, // 禁止 if 语句中有 return 之后有 else
		"no-empty-function": 2, // 禁止出现空函数
		"no-eq-null": 2, // 禁止在没有类型检查操作符的情况下与 null 进行比较
		"no-eval": 2, // 禁用 eval()
		"no-extra-bind": 2, // 禁止不必要的 .bind() 调用
		"no-fallthrough": 2, // 禁止 case 语句落空
		"no-floating-decimal": 2, // 禁止数字字面量中使用前导和末尾小数点
		"no-implicit-coercion": 2, // 禁止使用短符号进行类型转换
		"no-implicit-globals": 2, // 禁止在全局范围内使用 var 和命名的 function 声明
		"no-invalid-this": 2, // 禁止 this 关键字出现在类和类对象之外
		"no-lone-blocks": 2, // 禁用不必要的嵌套块
		"no-loop-func": 2, // 禁止在循环中出现 function 声明和表达式
		"no-multi-spaces": 2, // 禁止使用多个空格
		"no-multi-str": 2, // 禁止使用多行字符串
		"no-new": 2, // 禁止在非赋值或条件语句中使用 new 操作符
		"no-new-func": 2, // 禁止对 Function 对象使用 new 操作符
		"no-new-wrappers": 2, // 禁止对 String，Number 和 Boolean 使用 new 操作符
		"no-param-reassign": 2, // 不允许对 function 的参数进行重新赋值
		"no-redeclare": 2, // 禁止使用 var 多次声明同一变量
		"no-return-assign": 2, // 禁止在 return 语句中使用赋值语句
		"no-script-url": 2, // 禁止使用 javascript: url
		"no-self-assign": 2, // 禁止自我赋值
		"no-self-compare": 2, // 禁止自身比较
		"no-sequences": 2, // 禁用逗号操作符
		"no-unmodified-loop-condition": 2, // 禁用一成不变的循环条件
		"no-unused-expressions": 2, // 禁止出现未使用过的表达式
		"no-useless-call": 2, // 禁止不必要的 .call() 和 .apply()
		"no-useless-concat": 2, // 禁止不必要的字符串字面量或模板字面量的连接
		"vars-on-top": 2 // 要求所有的 var 声明出现在它们所在的作用域顶部
	}
}
