241 lines
7.6 KiB
JavaScript
241 lines
7.6 KiB
JavaScript
![]() |
/* eslint-env node */
|
|||
|
require("@rushstack/eslint-patch/modern-module-resolution");
|
|||
|
|
|||
|
module.exports = {
|
|||
|
root: true,
|
|||
|
extends: [
|
|||
|
"plugin:vue/vue3-essential",
|
|||
|
"eslint:recommended",
|
|||
|
"@vue/eslint-config-typescript",
|
|||
|
"@vue/eslint-config-prettier",
|
|||
|
"plugin:prettier/recommended",
|
|||
|
],
|
|||
|
parserOptions: {
|
|||
|
ecmaVersion: "latest",
|
|||
|
},
|
|||
|
rules: {
|
|||
|
// 'prettier/prettier': 'warn',
|
|||
|
"prettier/prettier": "warn",
|
|||
|
/** vue相关 **/
|
|||
|
"vue/html-self-closing": 0,
|
|||
|
// 单行允许有的attr数量
|
|||
|
"vue/max-attributes-per-line": [
|
|||
|
1,
|
|||
|
{
|
|||
|
singleline: 10,
|
|||
|
multiline: 3
|
|||
|
},
|
|||
|
],
|
|||
|
// 关闭子组件必须换行
|
|||
|
"vue/singleline-html-element-content-newline": "off",
|
|||
|
"vue/multiline-html-element-content-newline": "off",
|
|||
|
"vue/component-name-in-template-casing": [
|
|||
|
2,
|
|||
|
"kebab-case",
|
|||
|
{
|
|||
|
registeredComponentsOnly: false,
|
|||
|
ignores: [],
|
|||
|
},
|
|||
|
],
|
|||
|
// 组件名称强制为Pascal case
|
|||
|
"vue/name-property-casing": [2, "PascalCase"],
|
|||
|
// 对于v-html指令,开启警告
|
|||
|
"vue/no-v-html": 1,
|
|||
|
"vue/attributes-order": 0,
|
|||
|
"vue/mustache-interpolation-spacing": 0,
|
|||
|
"vue/no-unused-components": 1,
|
|||
|
/** 变量申明相关 **/
|
|||
|
// 变量申明要求使用 let 或 const 而不是 var
|
|||
|
"no-var": 2,
|
|||
|
// 不允许在块中function、var的申明
|
|||
|
"no-inner-declarations": [2, "both"],
|
|||
|
// 变量不强制为camelcase
|
|||
|
camelcase: 0,
|
|||
|
// 构造函数首字母必须大写
|
|||
|
"new-cap": [
|
|||
|
2,
|
|||
|
{
|
|||
|
newIsCap: true,
|
|||
|
capIsNew: false,
|
|||
|
},
|
|||
|
],
|
|||
|
// 尽量不要出现变量及函数参数定义了不使用的情况
|
|||
|
"no-unused-vars": [
|
|||
|
1,
|
|||
|
{
|
|||
|
vars: "all",
|
|||
|
args: "none",
|
|||
|
},
|
|||
|
],
|
|||
|
// 禁止在变量定义之前使用它们
|
|||
|
"no-use-before-define": 0, // 不检测该类型
|
|||
|
// 要求所有的 var 声明出现在它们所在的作用域顶部,同时应尽量不要使用var申明变量,用let, const代替
|
|||
|
"vars-on-top": 2,
|
|||
|
"no-constant-condition": 1,
|
|||
|
|
|||
|
/** 编码风格相关 **/
|
|||
|
// 不强制结尾分号,为保证代码风格一致性,建议统一不使用分号,但应注意不要混淆多行表达式
|
|||
|
semi: 0,
|
|||
|
// 代码缩进为2个空格
|
|||
|
indent: [
|
|||
|
1,
|
|||
|
2,
|
|||
|
{
|
|||
|
SwitchCase: 1,
|
|||
|
},
|
|||
|
],
|
|||
|
// 箭头函数的箭头前后应该有空格
|
|||
|
"arrow-spacing": [
|
|||
|
2,
|
|||
|
{
|
|||
|
before: true,
|
|||
|
after: true,
|
|||
|
},
|
|||
|
],
|
|||
|
// 花括号风格采用one true brace style
|
|||
|
"brace-style": [
|
|||
|
2,
|
|||
|
"1tbs",
|
|||
|
{
|
|||
|
allowSingleLine: true,
|
|||
|
},
|
|||
|
],
|
|||
|
// 禁止空格和 tab 的混合缩进
|
|||
|
"no-mixed-spaces-and-tabs": 2,
|
|||
|
// 最大的连续空行限制为2行
|
|||
|
"no-multiple-empty-lines": [
|
|||
|
2,
|
|||
|
{
|
|||
|
max: 2,
|
|||
|
},
|
|||
|
],
|
|||
|
// 不强制在对象和数组字面量中使用一致的拖尾逗号,但所有的风格应尽量保持统一
|
|||
|
"comma-dangle": 0,
|
|||
|
// 逗号后需要跟空格
|
|||
|
"comma-spacing": [
|
|||
|
2,
|
|||
|
{
|
|||
|
before: false,
|
|||
|
after: true,
|
|||
|
},
|
|||
|
],
|
|||
|
// 允许在字符串和注释以外用一些不规则的空格,但是整体风格应尽量保持统一
|
|||
|
"no-irregular-whitespace": 0,
|
|||
|
// 逗号应该在语句后面
|
|||
|
"comma-style": [2, "last"],
|
|||
|
// 强制所有控制语句花括号不能省略
|
|||
|
curly: [2, "all"],
|
|||
|
// 要求 switch 语句中必须有 default 分支,或者有 // no default 注释
|
|||
|
"default-case": 2,
|
|||
|
// 禁止switch的case语句不break、return等结尾,若有意为之,请添加 // no break 类似注释语句
|
|||
|
"no-fallthrough": [
|
|||
|
2,
|
|||
|
{
|
|||
|
commentPattern: "no[\\s\\w]*break",
|
|||
|
},
|
|||
|
],
|
|||
|
// 不允许使用带标签的break,continue等语句
|
|||
|
"no-labels": 2,
|
|||
|
// 换行符应该在成员表达式中的点之前
|
|||
|
"dot-location": [2, "property"],
|
|||
|
// 对象属性访问不强制使用点操作符,如 foo["bar"]
|
|||
|
"dot-notation": 0,
|
|||
|
// 除null外,对比时强制要求使用 === 和 !==
|
|||
|
eqeqeq: [
|
|||
|
1,
|
|||
|
"always",
|
|||
|
{
|
|||
|
null: "ignore",
|
|||
|
},
|
|||
|
],
|
|||
|
// 禁止在函数标识符和其调用之间有空格
|
|||
|
"func-call-spacing": [2, "never"],
|
|||
|
// JSX 属性值强制使用双引号
|
|||
|
"jsx-quotes": [2, "prefer-double"],
|
|||
|
// 对象字面量属性冒号前不能有空格,冒号后必须跟空格
|
|||
|
"key-spacing": [
|
|||
|
2,
|
|||
|
{
|
|||
|
beforeColon: false,
|
|||
|
afterColon: true,
|
|||
|
},
|
|||
|
],
|
|||
|
// if else for 等关键字前后必须跟空格
|
|||
|
"keyword-spacing": [
|
|||
|
2,
|
|||
|
{
|
|||
|
before: true,
|
|||
|
after: true,
|
|||
|
},
|
|||
|
],
|
|||
|
// 强制 getter 和 setter 在对象中成对出现
|
|||
|
"accessor-pairs": 2,
|
|||
|
// 不应该使用构造函数来构造新Array数组
|
|||
|
"no-array-constructor": 2,
|
|||
|
// 尽量不要使用arguments.caller和arguments.callee
|
|||
|
"no-caller": 1,
|
|||
|
// 不得对变量使用delete
|
|||
|
"no-delete-var": 2,
|
|||
|
// 禁止重复模块导入
|
|||
|
"no-duplicate-imports": 2,
|
|||
|
// 出现空函数告警,如果确实需要,函数体中可以加上注释
|
|||
|
"no-empty-function": 1,
|
|||
|
// 禁止使用空解构模式,如 const {a: {}} = foo;
|
|||
|
"no-empty-pattern": 2,
|
|||
|
// 禁止使用 eval()
|
|||
|
"no-eval": 2,
|
|||
|
// 禁止使用类似 eval() 的方法,如 setTimeout("alert('Hi!');", 100)
|
|||
|
"no-implied-eval": 2,
|
|||
|
// 禁止对 Function 对象使用 new 操作符,原因与eval相同
|
|||
|
"no-new-func": 2,
|
|||
|
// 禁用 with 语句
|
|||
|
"no-with": 2,
|
|||
|
// 允许强制转换变量为boolean类型,如 !!bar,但是很多情况没有必要
|
|||
|
"no-extra-boolean-cast": 0,
|
|||
|
// 禁止数字字面量中使用前导和末尾小数点,如 .5, 2., -.7等
|
|||
|
"no-floating-decimal": 2,
|
|||
|
// 禁止使用 __iterator__ 属性
|
|||
|
"no-iterator": 2,
|
|||
|
// 不允许使用 new require表达式
|
|||
|
"no-new-require": 2,
|
|||
|
// 禁止对 __dirname 和 __filename 进行字符串连接,应该用path.join等方法代替
|
|||
|
"no-path-concat": 2,
|
|||
|
// 关闭禁止直接调用 Object.prototypes 的内置属性规则
|
|||
|
"no-prototype-builtins": 0,
|
|||
|
// 不允许字符串文字中的八进制转义序列,如 "abc \234"
|
|||
|
"no-octal-escape": 2,
|
|||
|
// 不允许使用 __proto__ 属性,应该用Object.getPrototypeOf和Object.setPrototypeOf方法代替
|
|||
|
"no-proto": 2,
|
|||
|
// 不允许在return语句中使用赋值运算符,如 return foo = bar + 2;
|
|||
|
"no-return-assign": [2, "always"],
|
|||
|
// 尽量不要在常规字符串中出现模板字面量占位符语法
|
|||
|
"no-template-curly-in-string": 1,
|
|||
|
// 尽量不要在 return、throw、continue 和 break 语句后出现不可达代码
|
|||
|
"no-unreachable": 1,
|
|||
|
// 尽量少地在对象中使用不必要的计算属性
|
|||
|
"no-useless-computed-key": 1,
|
|||
|
// 尽量不要使用没有意义的构造函数,如空的构造函数
|
|||
|
"no-useless-constructor": 1,
|
|||
|
// 尽量不要使用没必要的字符转义
|
|||
|
"no-useless-escape": 1,
|
|||
|
// 如果对象的属性位于同一行上,则不允许围绕点或在开头括号之前留出空白
|
|||
|
"no-whitespace-before-property": 2,
|
|||
|
// 使用 symbol 时必须有描述
|
|||
|
"symbol-description": 2,
|
|||
|
// 不限制使用console,但是在生成环境应该尽量删除
|
|||
|
"no-console": 0,
|
|||
|
// 不允许在生产环境的代码中有alert、confirm 和 prompt
|
|||
|
"no-alert": process.env.NODE_ENV === "production" ? 2 : 0,
|
|||
|
// 不允许在生产环境的代码中有debugger
|
|||
|
"no-debugger": process.env.NODE_ENV === "production" ? 2 : 0,
|
|||
|
|
|||
|
// 禁止解析闭合标签 x-invalid-end-tag 报错
|
|||
|
"no-parsing-error": [
|
|||
|
2,
|
|||
|
{
|
|||
|
"x-invalid-end-tag": false,
|
|||
|
},
|
|||
|
],
|
|||
|
},
|
|||
|
};
|