vue3sandbox/.eslintrc.cjs
严争鸣 7f68787164 init
2024-12-09 14:54:32 +08:00

241 lines
7.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* 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,
},
],
},
};