vue3sandbox/.eslintrc.cjs

241 lines
7.6 KiB
JavaScript
Raw Permalink Normal View History

2024-12-09 06:54:32 +00:00
/* 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",
},
],
// 不允许使用带标签的breakcontinue等语句
"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,
},
],
},
};