.eslintrc.json•5.45 kB
{
"env": {
"node": true,
"es2022": true
},
"extends": [
"eslint:recommended",
"plugin:jsdoc/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2022,
"sourceType": "module",
"project": "./tsconfig.json"
},
"plugins": [
"@typescript-eslint",
"jsdoc"
],
"rules": {
// 缩进规则 - 2个空格
"indent": [
"error",
2,
{
"SwitchCase": 1
}
],
"@typescript-eslint/indent": [
"error",
2
],
// 分号规则 - 不使用分号
"semi": [
"error",
"never"
],
"@typescript-eslint/semi": [
"error",
"never"
],
// 引号规则 - 单引号
"quotes": [
"error",
"single",
{
"avoidEscape": true
}
],
"@typescript-eslint/quotes": [
"error",
"single"
],
// 现代JavaScript规则
"no-var": "error",
"prefer-const": "error",
"prefer-arrow-callback": "error",
"arrow-spacing": "error",
"prefer-template": "error",
"template-curly-spacing": [
"error",
"never"
],
"object-shorthand": "error",
"prefer-destructuring": [
"error",
{
"array": true,
"object": true
},
{
"enforceForRenamedProperties": false
}
],
// 逗号规则
"comma-dangle": [
"error",
"always-multiline"
],
"comma-spacing": [
"error",
{
"before": false,
"after": true
}
],
"comma-style": [
"error",
"last"
],
// 空格规则
"space-before-blocks": "error",
"space-before-function-paren": [
"error",
{
"anonymous": "always",
"named": "never",
"asyncArrow": "always"
}
],
"space-in-parens": [
"error",
"never"
],
"space-infix-ops": "error",
"keyword-spacing": "error",
"object-curly-spacing": [
"error",
"always"
],
"array-bracket-spacing": [
"error",
"never"
],
// 换行规则
"eol-last": [
"error",
"always"
],
"no-multiple-empty-lines": [
"error",
{
"max": 2,
"maxEOF": 1
}
],
"no-trailing-spaces": "error",
// TypeScript特定规则
"@typescript-eslint/no-unused-vars": [
"error",
{
"argsIgnorePattern": "^_"
}
],
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/prefer-optional-chain": "error",
"@typescript-eslint/prefer-nullish-coalescing": "error",
"@typescript-eslint/no-non-null-assertion": "warn",
// 函数和类规则
"brace-style": [
"error",
"1tbs",
{
"allowSingleLine": true
}
],
"curly": [
"error",
"multi-line"
],
"no-else-return": [
"error",
{
"allowElseIf": false
}
],
// 错误处理
"no-console": "warn",
"no-debugger": "error",
"no-alert": "error",
// 代码质量规则
"no-duplicate-imports": "error",
"no-useless-constructor": "error",
"no-useless-rename": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
// 导入排序 (如果使用import/order插件)
"sort-imports": [
"error",
{
"ignoreCase": false,
"ignoreDeclarationSort": true,
"ignoreMemberSort": false,
"memberSyntaxSortOrder": [
"none",
"all",
"multiple",
"single"
],
"allowSeparatedGroups": true
}
],
// JSDoc 标准注释规则
"jsdoc/require-jsdoc": [
"error",
{
"require": {
"FunctionDeclaration": true,
"MethodDefinition": true,
"ClassDeclaration": true,
"ArrowFunctionExpression": true,
"FunctionExpression": true
}
}
],
"jsdoc/require-description": [
"error",
{
"contexts": ["any"]
}
],
"jsdoc/require-description-complete-sentence": "error",
"jsdoc/require-param": "error",
"jsdoc/require-param-description": "error",
"jsdoc/require-param-name": "error",
"jsdoc/require-param-type": "off",
"jsdoc/require-returns": [
"error",
{
"forceRequireReturn": false,
"forceReturnsWithAsync": false
}
],
"jsdoc/require-returns-description": "error",
"jsdoc/require-returns-type": "off",
"jsdoc/check-param-names": "error",
"jsdoc/check-property-names": "error",
"jsdoc/check-tag-names": "error",
"jsdoc/check-types": "off",
"jsdoc/check-values": "error",
"jsdoc/check-syntax": "error",
"jsdoc/check-indentation": "error",
"jsdoc/check-alignment": "error",
"jsdoc/no-undefined-types": "off",
"jsdoc/valid-types": "off",
"jsdoc/require-example": "off",
"jsdoc/require-hyphen-before-param-description": [
"error",
"never"
],
"jsdoc/tag-lines": [
"error",
"never",
{
"startLines": 1
}
],
"jsdoc/no-blank-blocks": "error",
"jsdoc/no-blank-block-descriptions": "error"
},
"ignorePatterns": [
"node_modules/",
"dist/",
"build/",
"*.min.js",
"coverage/"
]
}