@sheplu/eslint-config
Version:
A simple ESLint config based on recommended rules and stylistic formatting
729 lines (727 loc) • 17.6 kB
JavaScript
export default [
{
rules: {
"@stylistic/array-bracket-newline": [
"error", {
"multiline": true,
"minItems": 3,
},
],
"@stylistic/array-bracket-spacing": [
"error", "always", {
"singleValue": true,
"objectsInArrays": true,
"arraysInArrays": true,
},
],
"@stylistic/array-element-newline": [
"error", {
"consistent": true,
"multiline": true,
"minItems": 3,
},
],
"@stylistic/arrow-parens": [
"error", "always", {
"requireForBlockBody": true,
},
],
"@stylistic/arrow-spacing": [
"error", {
"before": true,
"after": true,
},
],
"@stylistic/block-spacing": [
"error", "always",
],
"@stylistic/brace-style": [
"error", "1tbs", {
"allowSingleLine": false
},
],
"@stylistic/comma-dangle": [
"error", {
"arrays": "always-multiline",
"objects": "always-multiline",
"imports": "always-multiline",
"exports": "always-multiline",
"functions": "always-multiline",
"importAttributes": "always-multiline",
"dynamicImports": "always-multiline",
"enums": "always-multiline",
"generics": "always-multiline",
"tuples": "always-multiline",
},
],
"@stylistic/comma-spacing": [
"error", {
"before": false,
"after": true,
},
],
"@stylistic/comma-style": [
"error", "last", {
"exceptions": {
"ArrayExpression": false,
"ArrayPattern": false,
"ArrowFunctionExpression": false,
"CallExpression": false,
"FunctionDeclaration": false,
"FunctionExpression": false,
"ImportDeclaration": false,
"ObjectExpression": false,
"ObjectPattern": false,
"VariableDeclaration": false,
"NewExpression": false,
"ExportAllDeclaration": false,
"ExportNamedDeclaration": false,
"ImportExpression": false,
"SequenceExpression": false,
"ClassDeclaration": false,
"ClassExpression": false,
"TSDeclareFunction": false,
"TSFunctionType": false,
"TSConstructorType": false,
"TSEmptyBodyFunctionExpression": false,
"TSMethodSignature": false,
"TSCallSignatureDeclaration": false,
"TSConstructSignatureDeclaration": false,
"TSEnumBody": false,
"TSTypeLiteral": false,
"TSInterfaceBody": false,
"TSIndexSignature": false,
"TSInterfaceDeclaration": false,
"TSTypeParameterDeclaration": false,
"ArrayExpression": false,
"TSTypeParameterInstantiation": false,
},
},
],
"@stylistic/computed-property-spacing": [
"error", "never", {
"enforceForClassMembers": true,
},
],
"@stylistic/curly-newline": [
"error", {
"IfStatementConsequent": "always",
"IfStatementAlternative": "always",
"ForStatement": "always",
"ForInStatement": "always",
"ForOfStatement": "always",
"WhileStatement": "always",
"DoWhileStatement": "always",
"SwitchStatement": "always",
"SwitchCase": "always",
"TryStatementBlock": "always",
"TryStatementHandler": "always",
"TryStatementFinalizer": "always",
"BlockStatement": "always",
"FunctionDeclaration": "always",
"FunctionExpression": "always",
"Property": "always",
"ClassBody": "always",
"StaticBlock": "always",
"WithStatement": "always",
"TSModuleBlock": "always",
},
],
"@stylistic/dot-location": [
"error", "property",
],
"@stylistic/eol-last": [
"error", "always",
],
"@stylistic/function-call-argument-newline": [
"error", "consistent",
],
"@stylistic/function-call-spacing": [
"error", "never",
],
"@stylistic/function-paren-newline": [
"error", "multiline",
],
"@stylistic/generator-star-spacing": [
"error", {
"before": true,
"after": false,
"anonymous": {
"before": true,
"after": false,
},
"method": {
"before": true,
"after": false,
},
},
],
"@stylistic/implicit-arrow-linebreak": [
"error", "beside",
],
"@stylistic/indent": [
"error", "tab",
],
"@stylistic/indent-binary-ops": [
"error", "tab",
],
"@stylistic/jsx-child-element-spacing": [
"error",
],
"@stylistic/jsx-closing-bracket-location": [
"error", "tag-aligned",
],
"@stylistic/jsx-closing-tag-location": [
"error", "tag-aligned",
],
"@stylistic/jsx-curly-brace-presence": [
"error", {
"props": "never",
"children": "never",
"propElementValues": "never",
},
],
"@stylistic/jsx-curly-newline": [
"error", {
"multiline": "consistent",
"singleline": "consistent",
},
],
"@stylistic/jsx-curly-spacing": [
"error", {
"when": "always",
},
],
"@stylistic/jsx-equals-spacing": [
"error", "never",
],
"@stylistic/jsx-first-prop-new-line": [
"error", "multiline-multiprop",
],
"@stylistic/jsx-function-call-newline": [
"error", "multiline",
],
"@stylistic/jsx-indent-props": [
"error", {
"indentMode": "tab",
"ignoreTernaryOperator": false,
},
],
"@stylistic/jsx-max-props-per-line": [
"error", {
"maximum": {
"single": 1,
"multi": 1,
},
},
],
"@stylistic/jsx-newline": [
"error", {
"prevent": false,
"allowMultilines": false,
},
],
"@stylistic/jsx-one-expression-per-line": [
"error", {
"allow": "none",
},
],
"@stylistic/jsx-pascal-case": [
"error", {
"allowAllCaps": false,
"allowLeadingUnderscore": false,
"allowNamespace": false,
"ignore": [],
},
],
"@stylistic/jsx-quotes": [
"error", "prefer-double",
],
"@stylistic/jsx-self-closing-comp": [
"error", {
"component": false,
"html": false,
},
],
"@stylistic/jsx-sort-props": [
"error", {
"ignoreCase": false,
"callbacksLast": true,
"shorthandFirst": false,
"shorthandLast": true,
"multiline": "last",
"noSortAlphabetically": false,
"reservedFirst": true,
"reservedLast": [],
"locale": "auto",
},
],
"@stylistic/jsx-tag-spacing": [
"error", {
"closingSlash": "never",
"beforeSelfClosing": "always",
"afterOpening": "never",
"beforeClosing": "never",
},
],
"@stylistic/jsx-wrap-multilines": [
"error", {
"declaration": "parens",
"assignment": "parens",
"return": "parens",
"arrow": "parens",
"condition": "ignore",
"logical": "ignore",
"prop": "ignore",
"propertyValue": "ignore",
},
],
"@stylistic/key-spacing": [
"error", {
"singleLine": {
"beforeColon": false,
"afterColon": true,
"mode": "strict",
},
"multiLine": {
"beforeColon": false,
"afterColon": true,
"mode": "strict",
},
},
],
"@stylistic/keyword-spacing": [
"error", {
"before": true,
"after": true,
"overrides": {
"accessor": { "after": true, },
"as": { "after": true, },
"async": { "after": true, },
"await": { "after": true, },
"break": { "after": true, },
"case": { "after": true, },
"catch": { "after": true, },
"class": { "after": true, },
"const": { "after": true, },
"debugger": { "after": true, },
"delete": { "after": true, },
"do": { "after": true, },
"else": { "after": true, },
"export": { "after": true, },
"extends": { "after": true, },
"finally": { "after": true, },
"for": { "after": true, },
"from": { "after": true, },
"function": { "after": true, },
"get": { "after": true, },
"if": { "after": true, },
"import": { "after": true, },
"in": { "after": true, },
"let": { "after": true, },
"new": { "after": true, },
"of": { "after": true, },
"return": { "after": true, },
"set": { "after": true, },
"static": { "after": true, },
"super": { "after": true, },
"switch": { "after": true, },
"this": { "after": true, },
"throw": { "after": true, },
"try": { "after": true, },
"typeof": { "after": true, },
"using": { "after": true, },
"var": { "after": true, },
"void": { "after": true, },
"while": { "after": true, },
"with": { "after": true, },
"yield": { "after": true, },
},
},
],
"@stylistic/line-comment-position": [
"error", {
"position": "above",
"ignorePattern": "slint",
"applyDefaultIgnorePatterns": true,
},
],
"@stylistic/linebreak-style": [
"error", "unix",
],
"@stylistic/lines-around-comment": [
"error", {
"beforeBlockComment": true,
"afterBlockComment": false,
"beforeLineComment": true,
"afterLineComment": false,
"allowBlockStart": true,
"allowBlockEnd": false,
"allowObjectStart": true,
"allowObjectEnd": false,
"allowArrayStart": true,
"allowArrayEnd": false,
"allowClassStart": true,
"allowClassEnd": false,
"allowEnumStart": true,
"allowEnumEnd": false,
"allowInterfaceStart": true,
"allowInterfaceEnd": false,
"allowModuleStart": true,
"allowModuleEnd": false,
"allowTypeStart": true,
"allowTypeEnd": false,
"applyDefaultIgnorePatterns": true,
"ignorePattern": "slint",
"afterHashbangComment": true,
},
],
"@stylistic/lines-between-class-members": [
"error", {
"enforce": [
{ blankLine: "always", prev: "*", next: "*" },
{ blankLine: "always", prev: "method", next: "method" },
{ blankLine: "always", prev: "field", next: "method" },
{ blankLine: "never", prev: "field", next: "field" },
],
}, {
"exceptAfterSingleLine": false,
"exceptAfterOverload": false,
},
],
"@stylistic/max-len": [
"error", {
"code": 100,
"tabWidth": 4,
"comments": 140,
"ignoreComments": false,
"ignoreTrailingComments": false,
"ignoreUrls": true,
"ignoreStrings": false,
"ignoreTemplateLiterals": false,
"ignoreRegExpLiterals": true,
},
],
"@stylistic/max-statements-per-line": [
"error", {
"max": 1,
},
],
"@stylistic/member-delimiter-style": [
"error", {
"multiline": {
"delimiter": "semi",
"requireLast": true,
},
"singleline": {
"delimiter": "semi",
"requireLast": true,
},
"multilineDetection": "brackets",
},
],
"@stylistic/multiline-comment-style": [
"error", "starred-block",
],
"@stylistic/multiline-ternary": [
"error", "always", {
"ignoreJSX": false,
},
],
"@stylistic/new-parens": [
"error", "always",
],
"@stylistic/newline-per-chained-call": [
"error", {
"ignoreChainWithDepth": 3,
},
],
"@stylistic/no-confusing-arrow": [
"error", {
"allowParens": true,
"onlyOneSimpleParam": false,
},
],
"@stylistic/no-extra-parens": [
"error", "all", {
"conditionalAssign": false,
"returnAssign": false,
"nestedBinaryExpressions": false,
"ternaryOperandBinaryExpressions": false,
"enforceForArrowConditionals": false,
"enforceForSequenceExpressions": false,
"enforceForNewInMemberExpressions": false,
"enforceForFunctionPrototypeMethods": false,
"allowParensAfterCommentPattern": "@type",
"nestedConditionalExpressions": false,
"allowNodesInSpreadElement": {
"ConditionalExpression": false,
"LogicalExpression": false,
"AwaitExpression": false,
},
"ignoreJSX": "none",
},
],
"@stylistic/no-extra-semi": [
"off",
],
"@stylistic/no-floating-decimal": [
"error",
],
"@stylistic/no-mixed-operators": [
"error", {
"allowSamePrecedence": true,
"groups": [
["+", "-", "*", "/", "%", "**"],
["&", "|", "^", "~", "<<", ">>", ">>>"],
["==", "!=", "===", "!==", ">", ">=", "<", "<="],
["&&", "||"],
["in", "instanceof"],
],
},
],
"@stylistic/no-mixed-spaces-and-tabs": [
"error",
],
"@stylistic/no-multi-spaces": [
"error", {
"ignoreEOLComments": false,
"includeTabs": true,
},
],
"@stylistic/no-multiple-empty-lines": [
"error", {
"max": 1,
"maxBOF": 0,
"maxEOF": 0,
},
],
"@stylistic/no-tabs": [
"error", {
allowIndentationTabs: true,
},
],
"@stylistic/no-trailing-spaces": [
"error", {
"skipBlankLines": false,
"ignoreComments": false,
},
],
"@stylistic/no-whitespace-before-property": [
"error",
],
"@stylistic/nonblock-statement-body-position": [
"error", "beside",
],
"@stylistic/object-curly-newline": [
"error", {
"ObjectExpression": {
"multiline": true,
"minProperties": 3,
"consistent": true,
},
"ObjectPattern": {
"multiline": true,
"minProperties": 3,
"consistent": true,
},
"ImportDeclaration": {
"multiline": true,
"minProperties": 3,
"consistent": true,
},
"ExportDeclaration": {
"multiline": true,
"minProperties": 3,
"consistent": true,
},
"TSTypeLiteral": {
"multiline": true,
"minProperties": 3,
"consistent": true,
},
"TSInterfaceBody": {
"multiline": true,
"minProperties": 3,
"consistent": true,
},
"TSEnumBody": {
"multiline": true,
"minProperties": 3,
"consistent": true,
},
},
],
"@stylistic/object-curly-spacing": [
"error", "always", {
"arraysInObjects": true,
"objectsInObjects": true,
},
],
"@stylistic/object-property-newline": [
"error", {
"allowAllPropertiesOnSameLine": true,
},
],
"@stylistic/one-var-declaration-per-line": [
"error", "initializations",
],
"@stylistic/operator-linebreak": [
"error", "after",
],
"@stylistic/padded-blocks": [
"error", {
"blocks": "never",
"classes": "never",
"switches": "never",
},
],
"@stylistic/padding-line-between-statements": [
"error",
{ blankLine: "always", prev: "directive", next: "*" },
{ blankLine: "any", prev: "directive", next: "directive" },
{ blankLine: "always", prev: ["const", "let", "var"], next: "*" },
{ blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"] },
{ blankLine: "always", prev: "*", next: "return" },
{ blankLine: "always", prev: "*", next: "cjs-export" },
{ blankLine: "always", prev: "cjs-import", next: "*" },
{ blankLine: "never", prev: "cjs-import", next: "cjs-import" },
{ blankLine: "always", prev: "*", next: "function" },
{ blankLine: "always", prev: "import", next: "*" },
{ blankLine: "never", prev: "*", next: "import" },
],
"@stylistic/quote-props": [
"error", "consistent-as-needed", {
"keywords": true,
"unnecessary": true,
"numbers": true,
},
],
"@stylistic/quotes": [
"error", "single", {
"avoidEscape": true,
"allowTemplateLiterals": "avoidEscape",
"ignoreStringLiterals": false,
},
],
"@stylistic/rest-spread-spacing": [
"error", "never",
],
"@stylistic/semi": [
"error", "always", {
"omitLastInOneLineBlock": false,
"omitLastInOneLineClassBody": false,
},
],
"@stylistic/semi-spacing": [
"error", {
"before": false,
"after": true,
},
],
"@stylistic/semi-style": [
"error",
"last",
],
"@stylistic/space-before-blocks": [
"error", {
"functions": "always",
"keywords": "always",
"classes": "always",
"modules": "always",
},
],
"@stylistic/space-before-function-paren": [
"error", {
"anonymous": "always",
"named": "never",
"asyncArrow": "always",
"catch": "always",
},
],
"@stylistic/space-in-parens": [
"error", "never", {
"exceptions": [],
},
],
"@stylistic/space-infix-ops": [
"error", {
"int32Hint": false,
"ignoreTypes": false,
},
],
"@stylistic/space-unary-ops": [
"error", {
"words": true,
"nonwords": false,
"overrides": {
"new": true,
"delete": true,
"typeof": true,
"void": true,
"yield": true,
"-": true,
"+": true,
"--": false,
"++": false,
"|": true,
"||": true,
},
},
],
"@stylistic/spaced-comment": [
"error", "always", {
"line": {
"exceptions": [],
"markers": [],
},
"block": {
"exceptions": [],
"markers": [],
"balanced": true,
},
},
],
"@stylistic/switch-colon-spacing": [
"error", {
"after": true,
"before": false,
},
],
"@stylistic/template-curly-spacing": [
"error", "never",
],
"@stylistic/template-tag-spacing": [
"error", "never",
],
"@stylistic/type-annotation-spacing": [
"error", {
"before": false,
"after": true,
"overrides": {
"colon": { "before": false, "after": true },
"arrow": { "before": true, "after": true },
},
},
],
"@stylistic/type-generic-spacing": [
"error",
],
"@stylistic/type-named-tuple-spacing": [
"error",
],
"@stylistic/wrap-iife": [
"error", "outside",
],
"@stylistic/wrap-regex": [
"error",
],
"@stylistic/yield-star-spacing": [
"error", {
"before": false,
"after": true,
},
],
},
},
];