Skip to content

Instantly share code, notes, and snippets.

@jherr
Last active December 30, 2023 23:52
Show Gist options
  • Save jherr/1ab25795710e4a6d451bb65f83d3accb to your computer and use it in GitHub Desktop.
Save jherr/1ab25795710e4a6d451bb65f83d3accb to your computer and use it in GitHub Desktop.
Walkthrough of massive lint experiment
{
"root": true,
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": [
"standard",
"plugin:no-unsanitized/DOM",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/recommended",
"plugin:github/recommended",
"eslint:all",
"next",
"next/core-web-vitals",
"plugin:react/all",
"plugin:react/jsx-runtime",
"plugin:react-hooks/recommended",
"plugin:@next/next/recommended",
"standard-with-typescript",
"plugin:import/typescript",
"plugin:promise/recommended",
"plugin:unicorn/recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:@typescript-eslint/strict",
"plugin:@typescript-eslint/strict-type-checked",
"plugin:@typescript-eslint/stylistic",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:eslint-plugin/recommended",
"plugin:eslint-comments/recommended",
"plugin:tailwindcss/recommended",
"eslint-config-prettier",
"plugin:prettier/recommended",
"prettier"
],
"ignorePatterns": [
"**/.*",
"**/*.config.*",
"**/*.css",
"**/*.d.ts",
"**/*.*.json",
"**/*.json",
"**/*.log",
"**/*.map",
"**/*.md",
"**/*.rest",
"**/*.scss",
"**/*.sh",
"**/*.svn",
"**/*.txt",
"**/*.xml",
"**/*.yml",
"**/dockerfile.*"
],
"parserOptions": {
"tsconfigrootdir": "__dirname",
"project": true,
"allowAutomaticSingleRunInference": true,
"cacheLifetime": {
"glob": "Infinity"
},
"ecmaFeatures": {
"jsx": true,
"globalReturn": true
},
"ecmaVersion": "latest",
"emitDecoratorMetadata": true,
"jsxFragmentName": null,
"jsxPragma": "react",
"lib": ["es2018"],
"projectFolderIgnoreList": [
"**/.git/**",
"**/.github/**",
"**/.husky/**",
"**/.next/**",
"**/.swc/**",
"**/build/**",
"**/coverage/**",
"**/dist/**",
"**/fonts/**",
"**/logs/**",
"**/node_modules/**",
"**/public/**",
"**/styles/**"
],
"sourceType": "module",
"warnOnUnsupportedTypeScriptVersion": true
},
"settings": {
"github": {
"polymorphicPropName": "asChild",
"components": {
"Box": "p",
"Link": "a"
}
},
"import/extensions": [".js", ".jsx", ".ts", ".tsx"],
"import/external-module-folders": ["node_modules"],
"import/resolver": {
"typescript": {
"alwaysTryTypes": true,
"project": "./"
},
"node": true
},
"jest": {
"globalAliases": {
"describe": ["context"],
"fdescribe": ["fcontext"],
"xdescribe": ["xcontext"]
}
},
"jsdoc": {
"mode": "typescript"
},
"react": {
"version": "detect"
},
"tailwindcss": {
"callees": ["classnames", "clsx", "ctl"],
"config": "./tailwind.config.ts",
"cssFiles": [
"**/*.css",
"!**/node_modules",
"!**/.*",
"!**/dist",
"!**/build"
],
"cssFilesRefreshRate": 5000,
"removeDuplicates": true,
"skipClassAttribute": false,
"whitelist": [],
"tags": [],
"classRegex": "^class(Name)?$"
}
},
"plugins": [
"react",
"react-hooks",
"github",
"import",
"no-unsanitized",
"eslint-comments",
"promise",
"unicorn",
"@typescript-eslint",
"prettier"
],
"parser": "@typescript-eslint/parser",
"globals": {
"tag": "readonly",
"Promise": "off"
},
"noInlineConfig": false,
"overrides": [
{
"files": ["*.test.ts", "*.test.tsx"],
"env": {
"jest": true,
"jest/globals": true,
"serviceworker": true
},
"extends": [
"plugin:eslint-plugin/tests-recommended",
"plugin:jest/all",
"plugin:jest-dom/recommended",
"plugin:testing-library/dom",
"plugin:testing-library/react"
],
"plugins": ["jest", "jest-dom", "testing-library"],
"rules": {
"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/restrict-plus-operands": 0,
"@typescript-eslint/no-unsafe-assignment": 0,
"@typescript-eslint/no-unsafe-call": 0,
"@typescript-eslint/no-unsafe-member-access": 0,
"@typescript-eslint/no-unsafe-return": 0,
"eslint-plugin/consistent-output": 0,
"eslint-plugin/test-case-shorthand-strings": 2,
"jest-dom/prefer-checked": 2,
"jest-dom/prefer-enabled-disabled": 2,
"jest-dom/prefer-required": 2,
"jest-dom/prefer-to-have-attribute": 2,
"jest/no-disabled-tests": 0,
"jest/no-focused-tests": 2,
"jest/no-alias-methods": 2,
"jest/no-identical-title": 2,
"jest/no-jasmine-globals": 2,
"jest/no-test-prefixes": 2,
"jest/no-done-callback": 2,
"jest/no-test-return-statement": 2,
"jest/prefer-to-be": 2,
"jest/prefer-to-contain": 2,
"jest/prefer-to-have-length": 2,
"jest/prefer-spy-on": 2,
"jest/valid-expect": 2,
"jest/no-deprecated-functions": 2,
"jest/prefer-expect-assertions": 2,
"jest/no-hooks": [
2,
{
"allow": ["afterEach", "afterAll", "beforeAll", "beforeEach"]
}
],
"testing-library/await-async-queries": 2,
"testing-library/no-await-sync-queries": 2,
"testing-library/no-debugging-utils": 2,
"testing-library/no-dom-import": 2,
"testing-library/no-render-in-lifecycle": [
2,
{
"allowTestingFrameworkSetupHook": "beforeEach"
}
]
}
},
{
"files": ["*.cy.ts", "*.cy.tsx"],
"env": {
"cypress/globals": true
},
"extends": ["plugin:cypress/recommended"],
"plugins": ["cypress"],
"rules": {
"cypress/no-assigning-return-values": 2,
"cypress/no-unnecessary-waiting": 2,
"cypress/assertion-before-screenshot": 2,
"cypress/no-force": 2,
"cypress/no-async-tests": 2,
"cypress/no-pause": 2
}
},
{
"files": ["*.+(js|jsx)"],
"extends": ["plugin:@typescript-eslint/disable-type-checked"],
"rules": {
"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/no-unsafe-call": 0,
"@typescript-eslint/no-unsafe-member-access": 0,
"@typescript-eslint/no-unsafe-return": 0,
"@typescript-eslint/restrict-plus-operands": 0
}
},
{
"files": ["*.graphql"],
"parser": "@graphql-eslint/eslint-plugin",
"plugins": ["@graphql-eslint"],
"rules": {
"@graphql-eslint/known-type-names": "error"
}
}
],
"reportUnusedDisableDirectives": true
}
{
"extends": "./.eslint.json",
"rules": {
"@typescript-eslint/no-explicit-any": [
2,
{
"ignoreRestArgs": true
}
],
"tailwindcss/classnames-order": 2,
"tailwindcss/enforces-negative-arbitrary-values": 2,
"tailwindcss/enforces-shorthand": 2,
"tailwindcss/migration-from-tailwind-2": 2,
"tailwindcss/no-custom-classname": [
2,
{
"callees": ["classnames"],
"cssFiles": [
"**/*.css",
"!**/node_modules",
"!**/.*",
"!**/dist",
"!**/build",
"**/styles"
],
"cssFilesRefreshRate": 5000,
"ignoredKeys": ["compoundVariants", "defaultVariants"],
"skipClassAttribute": false,
"tags": [],
"whitelist": ["menuButton"]
}
],
"@typescript-eslint/no-use-before-define": [
2,
{
"functions": true,
"classes": true,
"variables": true,
"enums": true,
"typedefs": true
}
],
"@typescript-eslint/adjacent-overload-signatures": 2,
"@typescript-eslint/no-empty-function": [
2,
{
"allow": ["arrowFunctions"]
}
],
"@typescript-eslint/no-empty-interface": 2,
"@typescript-eslint/no-floating-promises": 2,
"@typescript-eslint/no-namespace": [
2,
{
"allowDeclarations": true
}
],
"@typescript-eslint/no-unnecessary-type-assertion": 2,
"@typescript-eslint/prefer-for-of": 2,
"@typescript-eslint/triple-slash-reference": 2,
"@typescript-eslint/unified-signatures": 2,
"@typescript-eslint/require-await": 2,
"@typescript-eslint/no-var-requires": 2,
"@typescript-eslint/explicit-module-boundary-types": 2,
"@typescript-eslint/ban-types": 2,
"@typescript-eslint/array-type": 2,
"@typescript-eslint/await-thenable": 2,
"@typescript-eslint/ban-tslint-comment": 2,
"@typescript-eslint/class-literal-property-style": 2,
"@typescript-eslint/consistent-generic-constructors": 2,
"@typescript-eslint/consistent-indexed-object-style": 2,
"@typescript-eslint/consistent-type-assertions": 2,
"@typescript-eslint/consistent-type-definitions": 2,
"@typescript-eslint/consistent-type-exports": 2,
"@typescript-eslint/explicit-member-accessibility": 2,
"@typescript-eslint/member-delimiter-style": 2,
"@typescript-eslint/member-ordering": 2,
"@typescript-eslint/method-signature-style": 2,
"@typescript-eslint/naming-convention": 2,
"@typescript-eslint/no-base-to-string": 2,
"@typescript-eslint/no-confusing-non-null-assertion": 2,
"@typescript-eslint/no-confusing-void-expression": 2,
"@typescript-eslint/no-duplicate-enum-values": 2,
"@typescript-eslint/no-duplicate-type-constituents": 2,
"@typescript-eslint/no-dynamic-delete": 2,
"@typescript-eslint/no-extra-non-null-assertion": 2,
"@typescript-eslint/no-extraneous-class": 2,
"@typescript-eslint/no-for-in-array": 2,
"@typescript-eslint/no-import-type-side-effects": 2,
"@typescript-eslint/no-inferrable-types": 2,
"@typescript-eslint/no-invalid-void-type": 2,
"@typescript-eslint/no-meaningless-void-operator": 2,
"@typescript-eslint/no-misused-new": 2,
"@typescript-eslint/no-misused-promises": 2,
"@typescript-eslint/no-mixed-enums": 2,
"@typescript-eslint/no-non-null-asserted-nullish-coalescing": 2,
"@typescript-eslint/no-non-null-asserted-optional-chain": 2,
"@typescript-eslint/no-non-null-assertion": 2,
"@typescript-eslint/no-redundant-type-constituents": 2,
"@typescript-eslint/no-require-imports": 2,
"@typescript-eslint/no-this-alias": 2,
"@typescript-eslint/no-type-alias": 0,
"@typescript-eslint/no-unnecessary-boolean-literal-compare": 2,
"@typescript-eslint/no-unnecessary-condition": 2,
"@typescript-eslint/no-unnecessary-qualifier": 2,
"@typescript-eslint/no-unnecessary-type-arguments": 2,
"@typescript-eslint/no-unnecessary-type-constraint": 2,
"@typescript-eslint/no-unsafe-argument": 2,
"@typescript-eslint/no-unsafe-assignment": 2,
"@typescript-eslint/no-unsafe-call": 0,
"@typescript-eslint/no-unsafe-declaration-merging": 2,
"@typescript-eslint/no-unsafe-enum-comparison": 2,
"@typescript-eslint/no-unsafe-member-access": 0,
"@typescript-eslint/no-unsafe-return": 2,
"@typescript-eslint/no-useless-empty-export": 2,
"@typescript-eslint/non-nullable-type-assertion-style": 2,
"@typescript-eslint/parameter-properties": 2,
"@typescript-eslint/prefer-as-const": 2,
"@typescript-eslint/prefer-enum-initializers": 2,
"@typescript-eslint/prefer-function-type": 2,
"@typescript-eslint/prefer-includes": 2,
"@typescript-eslint/prefer-namespace-keyword": 2,
"@typescript-eslint/prefer-nullish-coalescing": 2,
"@typescript-eslint/prefer-optional-chain": 2,
"@typescript-eslint/prefer-readonly": 2,
"@typescript-eslint/prefer-readonly-parameter-types": 0,
"@typescript-eslint/prefer-reduce-type-parameter": 2,
"@typescript-eslint/prefer-regexp-exec": 2,
"@typescript-eslint/prefer-return-this-type": 2,
"@typescript-eslint/prefer-string-starts-ends-with": 2,
"@typescript-eslint/prefer-ts-expect-error": 2,
"@typescript-eslint/promise-function-async": 2,
"@typescript-eslint/require-array-sort-compare": 2,
"@typescript-eslint/restrict-plus-operands": 2,
"@typescript-eslint/sort-type-constituents": 2,
"@typescript-eslint/strict-boolean-expressions": 2,
"@typescript-eslint/switch-exhaustiveness-check": 2,
"@typescript-eslint/type-annotation-spacing": 2,
"@typescript-eslint/typedef": 2,
"@typescript-eslint/unbound-method": 2,
"@typescript-eslint/block-spacing": 2,
"@typescript-eslint/brace-style": 2,
"@typescript-eslint/class-methods-use-this": 2,
"@typescript-eslint/comma-dangle": [
2,
{
"functions": "never"
}
],
"@typescript-eslint/comma-spacing": 2,
"@typescript-eslint/default-param-last": 2,
"@typescript-eslint/dot-notation": 2,
"@typescript-eslint/func-call-spacing": 2,
"@typescript-eslint/indent": 0,
"@typescript-eslint/init-declarations": 2,
"@typescript-eslint/key-spacing": 2,
"@typescript-eslint/keyword-spacing": 2,
"@typescript-eslint/lines-around-comment": 2,
"@typescript-eslint/lines-between-class-members": 2,
"@typescript-eslint/no-array-constructor": 2,
"@typescript-eslint/no-dupe-class-members": 2,
"@typescript-eslint/no-extra-parens": 2,
"@typescript-eslint/no-extra-semi": 2,
"@typescript-eslint/no-implied-eval": 2,
"@typescript-eslint/no-invalid-this": 2,
"@typescript-eslint/no-loop-func": 2,
"@typescript-eslint/no-loss-of-precision": 2,
"@typescript-eslint/no-magic-numbers": 2,
"@typescript-eslint/no-restricted-imports": 2,
"@typescript-eslint/no-shadow": 2,
"@typescript-eslint/no-throw-literal": 2,
"@typescript-eslint/no-unused-expressions": 2,
"@typescript-eslint/no-useless-constructor": 2,
"@typescript-eslint/object-curly-spacing": 2,
"@typescript-eslint/padding-line-between-statements": 2,
"@typescript-eslint/quotes": 2,
"@typescript-eslint/return-await": 2,
"@typescript-eslint/semi": 2,
"@typescript-eslint/space-before-blocks": 2,
"@typescript-eslint/space-before-function-paren": [
2,
{
"anonymous": "always",
"named": "never",
"asyncArrow": "always"
}
],
"@typescript-eslint/space-infix-ops": 2,
"eslint-comments/disable-enable-pair": [
2,
{
"allowWholeFile": true
}
],
"for-direction": 2,
"getter-return": 2,
"no-await-in-loop": 2,
"no-compare-neg-zero": 2,
"no-console": [
2,
{
"allow": ["log"]
}
],
"no-constant-condition": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-dupe-args": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty": 2,
"no-new-native-nonconstructor": 2,
"no-empty-character-class": 2,
"no-import-assign": 2,
"no-misleading-character-class": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": 2,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-promise-executor-return": 2,
"no-obj-calls": 2,
"no-param-reassign": [
2,
{
"props": false
}
],
"no-prototype-builtins": 2,
"no-regex-spaces": 2,
"no-sparse-arrays": 2,
"no-template-curly-in-string": 2,
"no-unexpected-multiline": 2,
"no-unreachable": 2,
"no-unsafe-finally": 2,
"no-unsafe-negation": 2,
"no-unused-private-class-members": 2,
"no-unreachable-loop": 2,
"no-tabs": 0,
"valid-typeof": 2,
"accessor-pairs": 2,
"array-callback-return": 2,
"no-unsafe-optional-chaining": 2,
"block-scoped-var": 2,
"class-methods-use-this": 2,
"complexity": 2,
"consistent-return": 2,
"dot-notation": 2,
"default-case-last": 2,
"guard-for-in": 2,
"max-classes-per-file": 2,
"no-async-promise-executor": 2,
"no-alert": 2,
"no-caller": 2,
"no-case-declarations": 2,
"no-div-regex": 2,
"no-else-return": 2,
"no-empty-function": 2,
"no-empty-pattern": 2,
"no-eq-null": 2,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-extra-label": 2,
"no-floating-decimal": 2,
"no-global-assign": 2,
"no-empty-static-block": 2,
"no-implicit-coercion": 2,
"no-implicit-globals": 2,
"no-implied-eval": 2,
"no-invalid-this": 2,
"no-iterator": 2,
"no-lone-blocks": 2,
"no-loop-func": 2,
"no-magic-numbers": 2,
"no-multi-spaces": 2,
"no-multi-str": 2,
"no-new": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-nonoctal-decimal-escape": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-proto": 2,
"no-redeclare": 2,
"no-restricted-exports": 2,
"no-restricted-properties": 2,
"no-setter-return": 2,
"no-return-assign": 2,
"no-script-url": 2,
"no-self-assign": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-throw-literal": 2,
"no-unmodified-loop-condition": 2,
"no-unused-labels": 2,
"no-useless-catch": 2,
"no-useless-call": 2,
"no-useless-concat": 2,
"no-useless-escape": 2,
"no-useless-return": 2,
"no-void": 2,
"no-warning-comments": 2,
"no-with": 2,
"prefer-promise-reject-errors": 2,
"require-unicode-regexp": 2,
"radix": 2,
"require-await": 2,
"require-atomic-updates": 2,
"vars-on-top": 2,
"wrap-iife": 2,
"yoda": 2,
"init-declarations": [
2,
"never",
{
"ignoreForLoopInit": true
}
],
"no-delete-var": 2,
"no-label-var": 2,
"no-restricted-globals": 2,
"no-shadow": 2,
"no-shadow-restricted-names": 2,
"no-useless-backreference": 2,
"no-undef-init": 2,
"no-undefined": 2,
"no-use-before-define": 2,
"array-bracket-newline": 2,
"array-bracket-spacing": 2,
"array-element-newline": [2, "consistent"],
"block-spacing": 2,
"brace-style": 2,
"camelcase": 2,
"capitalized-comments": 0,
"comma-dangle": [
2,
{
"functions": "never"
}
],
"comma-spacing": 2,
"comma-style": 2,
"computed-property-spacing": 2,
"consistent-this": 2,
"eol-last": 2,
"prefer-regex-literals": 2,
"func-call-spacing": 2,
"func-name-matching": 2,
"func-names": [
2,
"never",
{
"generators": "always"
}
],
"function-call-argument-newline": [2, "consistent"],
"func-style": [
2,
"declaration",
{
"allowArrowFunctions": true
}
],
"function-paren-newline": [2, "multiline-arguments"],
"grouped-accessor-pairs": 2,
"id-denylist": 2,
"id-length": 2,
"id-match": 2,
"implicit-arrow-linebreak": 2,
"indent": 0,
"key-spacing": 2,
"keyword-spacing": 2,
"logical-assignment-operators": 2,
"line-comment-position": 2,
"linebreak-style": [0, "unix"],
"lines-around-comment": 2,
"lines-between-class-members": 2,
"max-lines-per-function": 2,
"max-depth": 2,
"max-len": 2,
"max-lines": 2,
"max-nested-callbacks": 2,
"max-params": 2,
"max-statements": [
2,
10,
{
"ignoreTopLevelFunctions": true
}
],
"max-statements-per-line": 2,
"multiline-ternary": [2, "always-multiline"],
"new-cap": 2,
"new-parens": 2,
"newline-per-chained-call": [
2,
{
"ignoreChainWithDepth": 3
}
],
"no-array-constructor": 2,
"no-bitwise": 2,
"no-continue": 2,
"no-inline-comments": 2,
"no-lonely-if": 2,
"no-mixed-spaces-and-tabs": [2, "smart-tabs"],
"no-multi-assign": 2,
"no-multiple-empty-lines": 2,
"no-negated-condition": 2,
"no-nested-ternary": 2,
"no-new-object": 2,
"no-plusplus": 2,
"no-ternary": 0,
"no-trailing-spaces": 2,
"no-underscore-dangle": 2,
"no-unneeded-ternary": 2,
"no-whitespace-before-property": 2,
"nonblock-statement-body-position": 2,
"object-curly-newline": [
2,
{
"consistent": true
}
],
"object-curly-spacing": 2,
"object-property-newline": 2,
"one-var": 2,
"one-var-declaration-per-line": 2,
"operator-assignment": 2,
"operator-linebreak": [
2,
"after",
{
"overrides": {
"?": "before",
":": "before"
}
}
],
"padded-blocks": 2,
"padding-line-between-statements": 2,
"prefer-object-spread": 2,
"quote-props": [2, "as-needed"],
"quotes": 2,
"semi-spacing": 2,
"semi-style": 2,
"sort-keys": [
2,
"asc",
{
"caseSensitive": false,
"natural": false,
"minKeys": 2
}
],
"sort-vars": 2,
"space-before-blocks": 2,
"space-before-function-paren": [
2,
{
"anonymous": "always",
"named": "never",
"asyncArrow": "always"
}
],
"space-in-parens": 2,
"space-infix-ops": 2,
"space-unary-ops": 2,
"spaced-comment": 2,
"switch-colon-spacing": 2,
"template-tag-spacing": 2,
"wrap-regex": 2,
"arrow-body-style": [2, "always"],
"arrow-parens": 2,
"arrow-spacing": 2,
"constructor-super": 2,
"generator-star-spacing": 2,
"no-class-assign": 2,
"no-confusing-arrow": 2,
"no-const-assign": 2,
"no-constant-binary-expression": 2,
"no-constructor-return": 2,
"no-dupe-class-members": 2,
"no-duplicate-imports": 2,
"no-new-symbol": 2,
"no-dupe-else-if": 2,
"no-this-before-super": 2,
"no-useless-computed-key": 2,
"no-useless-constructor": 2,
"no-var": 2,
"object-shorthand": 2,
"prefer-arrow-callback": 2,
"prefer-const": 2,
"prefer-object-has-own": 2,
"prefer-destructuring": [
2,
{
"VariableDeclarator": {
"array": false,
"object": true
},
"AssignmentExpression": {
"array": true,
"object": true
}
},
{
"enforceForRenamedProperties": false
}
],
"prefer-numeric-literals": 2,
"prefer-named-capture-group": 2,
"prefer-rest-params": 2,
"prefer-exponentiation-operator": 2,
"prefer-spread": 2,
"prefer-template": 2,
"require-yield": 2,
"semi": 2,
"sort-imports": [
2,
{
"ignoreCase": false,
"ignoreDeclarationSort": true,
"ignoreMemberSort": true,
"memberSyntaxSortOrder": ["all", "single", "multiple", "none"],
"allowSeparatedGroups": true
}
],
"symbol-description": 2,
"template-curly-spacing": 2,
"yield-star-spacing": 2,
"eslint-comments/no-aggregating-enable": 2,
"eslint-comments/no-duplicate-disable": 2,
"eslint-comments/no-unlimited-disable": 2,
"eslint-comments/no-unused-disable": 2,
"eslint-comments/no-unused-enable": 2,
"eslint-comments/no-restricted-disable": 2,
"eslint-comments/require-description": [
2,
{
"ignore": ["eslint-disable", "eslint-disable-next-line"]
}
],
"promise/always-return": 2,
"promise/no-return-wrap": 2,
"promise/param-names": 2,
"promise/catch-or-return": 2,
"promise/no-native": 0,
"promise/no-nesting": 2,
"promise/no-promise-in-callback": 2,
"promise/no-callback-in-promise": 2,
"promise/avoid-new": 0,
"promise/no-new-statics": 2,
"promise/no-return-in-finally": 2,
"promise/valid-params": 2,
"import/extensions": [
2,
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
],
"import/no-namespace": 2,
"import/no-default-export": 0,
"import/newline-after-import": 2,
"import/no-absolute-path": 2,
"import/no-amd": 2,
"import/no-duplicates": 2,
"import/no-mutable-exports": 2,
"import/no-named-default": 2,
"import/no-named-export": 0,
"import/no-self-import": 2,
"import/named": 2,
"import/namespace": 2,
"import/default": 2,
"import/export": 2,
"import/no-named-as-default": 2,
"import/no-cycle": 2,
"import/no-unused-modules": 2,
"import/no-unresolved": 2,
"import/prefer-default-export": 0,
"import/no-deprecated": 2,
"import/no-unassigned-import": [
2,
{
"allow": ["**/*.css"]
}
],
"unicorn/prevent-abbreviations": 2,
"unicorn/no-array-for-each": 2,
"unicorn/no-null": [
2,
{
"checkStrictEquality": true
}
],
"unicorn/catch-error-name": 2,
"unicorn/consistent-destructuring": 2,
"unicorn/consistent-function-scoping": 2,
"unicorn/custom-error-definition": 2,
"unicorn/empty-brace-spaces": 2,
"unicorn/error-message": 2,
"unicorn/escape-case": 2,
"unicorn/expiring-todo-comments": 2,
"unicorn/explicit-length-check": 2,
"unicorn/filename-case": 2,
"unicorn/import-style": 2,
"unicorn/new-for-builtins": 2,
"unicorn/no-abusive-eslint-disable": 2,
"unicorn/no-array-callback-reference": 2,
"unicorn/no-array-method-this-argument": 2,
"unicorn/no-array-push-push": 2,
"unicorn/no-array-reduce": 2,
"unicorn/no-await-expression-member": 2,
"unicorn/no-console-spaces": 2,
"unicorn/no-document-cookie": 2,
"unicorn/no-empty-file": 2,
"unicorn/no-for-loop": 2,
"unicorn/no-hex-escape": 2,
"unicorn/no-instanceof-array": 2,
"unicorn/no-invalid-remove-event-listener": 2,
"unicorn/no-keyword-prefix": 2,
"unicorn/no-lonely-if": 2,
"unicorn/no-negated-condition": 2,
"unicorn/no-nested-ternary": 2,
"unicorn/no-new-array": 2,
"unicorn/no-new-buffer": 2,
"unicorn/no-object-as-default-parameter": 2,
"unicorn/no-process-exit": 2,
"unicorn/no-static-only-class": 2,
"unicorn/no-thenable": 2,
"unicorn/no-this-assignment": 2,
"unicorn/no-unnecessary-await": 2,
"unicorn/no-unreadable-array-destructuring": 2,
"unicorn/no-unreadable-iife": 2,
"unicorn/no-unused-properties": 2,
"unicorn/no-useless-fallback-in-spread": 2,
"unicorn/no-useless-length-check": 2,
"unicorn/no-useless-promise-resolve-reject": 2,
"unicorn/no-useless-spread": 2,
"unicorn/no-useless-switch-case": 2,
"unicorn/no-useless-undefined": 2,
"unicorn/no-zero-fractions": 2,
"unicorn/number-literal-case": 2,
"unicorn/numeric-separators-style": 2,
"unicorn/prefer-add-event-listener": 2,
"unicorn/prefer-array-find": 2,
"unicorn/prefer-array-flat": 2,
"unicorn/prefer-array-flat-map": 2,
"unicorn/prefer-array-index-of": 2,
"unicorn/prefer-array-some": 2,
"unicorn/prefer-at": 2,
"unicorn/prefer-blob-reading-methods": 2,
"unicorn/prefer-code-point": 2,
"unicorn/prefer-date-now": 2,
"unicorn/prefer-default-parameters": 2,
"unicorn/prefer-dom-node-append": 2,
"unicorn/prefer-dom-node-dataset": 2,
"unicorn/prefer-dom-node-remove": 2,
"unicorn/prefer-dom-node-text-content": 2,
"unicorn/prefer-event-target": 2,
"unicorn/prefer-export-from": 2,
"unicorn/prefer-includes": 2,
"unicorn/prefer-json-parse-buffer": 2,
"unicorn/prefer-keyboard-event-key": 2,
"unicorn/prefer-logical-operator-over-ternary": 2,
"unicorn/prefer-math-trunc": 2,
"unicorn/prefer-modern-dom-apis": 2,
"unicorn/prefer-modern-math-apis": 2,
"unicorn/prefer-module": 2,
"unicorn/prefer-native-coercion-functions": 2,
"unicorn/prefer-negative-index": 2,
"unicorn/prefer-node-protocol": 2,
"unicorn/prefer-number-properties": 2,
"unicorn/prefer-object-from-entries": 2,
"unicorn/prefer-optional-catch-binding": 2,
"unicorn/prefer-prototype-methods": 2,
"unicorn/prefer-query-selector": 2,
"unicorn/prefer-reflect-apply": 2,
"unicorn/prefer-regexp-test": 2,
"unicorn/prefer-set-has": 2,
"unicorn/prefer-set-size": 2,
"unicorn/prefer-spread": 2,
"unicorn/prefer-string-replace-all": 2,
"unicorn/prefer-string-slice": 2,
"unicorn/prefer-string-starts-ends-with": 2,
"unicorn/prefer-string-trim-start-end": 2,
"unicorn/prefer-switch": 2,
"unicorn/prefer-ternary": 2,
"unicorn/prefer-top-level-await": 2,
"unicorn/prefer-type-error": 2,
"unicorn/relative-url-style": 2,
"unicorn/require-array-join-separator": 2,
"unicorn/require-number-to-fixed-digits-argument": 2,
"unicorn/require-post-message-target-origin": 2,
"unicorn/string-content": 2,
"unicorn/switch-case-braces": 2,
"unicorn/template-indent": [
2,
{
"tags": ["outdent", "dedent", "gql", "sql", "html", "styled"],
"functions": ["dedent", "stripIndent"],
"selectors": [],
"comments": ["HTML", "indent"]
}
],
"unicorn/text-encoding-identifier-case": 2,
"unicorn/throw-new-error": 2,
"no-catch-shadow": 2,
"callback-return": 2,
"global-require": 2,
"handle-callback-err": 2,
"no-buffer-constructor": 2,
"no-mixed-requires": 2,
"no-new-require": 2,
"no-path-concat": 2,
"no-process-exit": 2,
"no-restricted-modules": 2,
"no-sync": [
2,
{
"allowAtRootLevel": true
}
],
"id-blacklist": 2,
"lines-around-directive": 2,
"newline-after-var": 2,
"newline-before-return": 2,
"no-spaced-func": 2,
"prefer-reflect": 2,
"no-loss-of-precision": 2,
"default-param-last": 2,
"no-return-await": 2,
"node/file-extension-in-import": 0,
"node/prefer-global/buffer": 0,
"node/prefer-global/console": 0,
"node/prefer-global/process": 0,
"node/prefer-global/url-search-params": 0,
"node/prefer-global/url": 0,
"node/prefer-promises/dns": 0,
"node/prefer-promises/fs": 0,
"jsx-quotes": 2,
"import/no-commonjs": [
2,
{
"allowPrimitiveModules": true
}
],
"filenames/match-regex": 2,
"i18n-text/no-en": 0,
"no-unsanitized/method": 2,
"no-unsanitized/property": 2,
"@next/next/no-page-custom-font": 2,
"@next/next/google-font-display": 2,
"@next/next/google-font-preconnect": 2,
"@next/next/inline-script-id": 2,
"@next/next/next-script-for-ga": 2,
"@next/next/no-assign-module-variable": 2,
"@next/next/no-async-client-component": 2,
"@next/next/no-before-interactive-script-outside-document": 2,
"@next/next/no-css-tags": 2,
"@next/next/no-document-import-in-page": 2,
"@next/next/no-duplicate-head": 2,
"@next/next/no-head-element": 2,
"@next/next/no-head-import-in-document": 2,
"@next/next/no-html-link-for-pages": 2,
"@next/next/no-img-element": 2,
"@next/next/no-script-component-in-head": 2,
"@next/next/no-styled-jsx-in-document": 2,
"@next/next/no-sync-scripts": 2,
"@next/next/no-title-in-document-head": 2,
"@next/next/no-typos": 2,
"@next/next/no-unwanted-polyfillio": 2,
"import/order": 0,
"default-case": [
2,
{
"commentPattern": "^no default$"
}
],
"dot-location": [2, "property"],
"no-cond-assign": [2, "except-parens"],
"no-labels": [
2,
{
"allowLoop": true,
"allowSwitch": false
}
],
"no-mixed-operators": [
2,
{
"groups": [
["&", "|", "^", "~", "<<", ">>", ">>>"],
["==", "!=", "===", "!==", ">", ">=", "<", "<="],
["&&", "||"],
["in", "instanceof"]
],
"allowSamePrecedence": false
}
],
"no-native-reassign": 2,
"no-negated-in-lhs": 2,
"no-restricted-syntax": [
2,
{
"selector": "TSEnumDeclaration",
"message": "My reason for not using any enums at all"
},
{
"selector": "TSEnumDeclaration[const=true]",
"message": "My reason for not using const enums"
},
{
"selector": "TSEnumDeclaration:not([const=true])",
"message": "My reason for not using non-const enums"
}
],
"no-unused-expressions": [
2,
{
"allowShortCircuit": true,
"allowTernary": true,
"allowTaggedTemplates": true
}
],
"no-unused-vars": [
2,
{
"args": "none",
"ignoreRestSiblings": true
}
],
"no-useless-rename": [
2,
{
"ignoreDestructuring": false,
"ignoreImport": false,
"ignoreExport": false
}
],
"rest-spread-spacing": [2, "never"],
"strict": [2, "never"],
"unicode-bom": [2, "never"],
"use-isnan": 2,
"@typescript-eslint/no-redeclare": [
2,
{
"builtinGlobals": false,
"ignoreDeclarationMerge": true
}
],
"react/react-in-jsx-scope": 0,
"@typescript-eslint/ban-ts-comment": [
2,
{
"ts-expect-error": "allow-with-description",
"ts-ignore": true,
"ts-nocheck": true,
"ts-check": false,
"minimumDescriptionLength": 5
}
],
"@typescript-eslint/consistent-type-imports": [
2,
{
"prefer": "type-imports",
"disallowTypeAnnotations": true
}
],
"@typescript-eslint/explicit-function-return-type": [
2,
{
"allowIIFEs": true
}
],
"@typescript-eslint/prefer-literal-enum-member": [
2,
{
"allowBitwiseExpressions": true
}
],
"@typescript-eslint/restrict-template-expressions": [
2,
{
"allowNumber": true,
"allowBoolean": true,
"allowAny": true,
"allowNullish": true,
"allowRegExp": true
}
],
"@typescript-eslint/no-unused-vars": [
2,
{
"varsIgnorePattern": "^_",
"argsIgnorePattern": "^_"
}
],
"curly": [2, "all"],
"eqeqeq": [
2,
"always",
{
"null": "never"
}
],
"no-fallthrough": [
2,
{
"commentPattern": ".*intentional fallthrough.*"
}
],
"eslint-comments/no-use": [
2,
{
"allow": [
"eslint-disable",
"eslint-disable-line",
"eslint-disable-next-line",
"eslint-enable",
"global"
]
}
],
"import/no-extraneous-dependencies": [
2,
{
"devDependencies": true,
"peerDependencies": true,
"optionalDependencies": false
}
],
"unicorn/no-typeof-undefined": 2,
"no-restricted-imports": 2,
"@typescript-eslint/max-params": 2,
"@typescript-eslint/no-unsafe-unary-minus": 2,
"@typescript-eslint/prefer-destructuring": 2,
"no-undef": 0,
"import/no-anonymous-default-export": [
2,
{
"allowArray": true,
"allowCallExpression": true,
"allowLiteral": true,
"allowObject": true,
"allowArrowFunction": false,
"allowAnonymousClass": false,
"allowAnonymousFunction": false
}
],
"react-hooks/rules-of-hooks": 2,
"react-hooks/exhaustive-deps": 2,
"react/boolean-prop-naming": 2,
"react/button-has-type": 2,
"react/default-props-match-prop-types": 2,
"react/destructuring-assignment": 2,
"react/display-name": 2,
"react/forbid-component-props": 2,
"react/forbid-dom-props": 2,
"react/forbid-elements": 2,
"react/forbid-prop-types": 2,
"react/forbid-foreign-prop-types": 2,
"react/no-access-state-in-setstate": 2,
"react/no-array-index-key": 2,
"react/no-children-prop": 2,
"react/no-danger": 2,
"react/no-danger-with-children": 2,
"react/no-deprecated": 2,
"react/no-did-mount-set-state": 2,
"react/no-did-update-set-state": 2,
"react/no-direct-mutation-state": 2,
"react/no-find-dom-node": 2,
"react/no-is-mounted": 2,
"react/no-multi-comp": 2,
"react/no-redundant-should-component-update": 2,
"react/no-render-return-value": 2,
"react/no-set-state": 2,
"react/no-typos": 2,
"react/no-string-refs": 2,
"react/no-this-in-sfc": 2,
"react/no-unescaped-entities": 2,
"react/no-unknown-property": [
2,
{
"ignore": ["jsx", "global"]
}
],
"react/no-unused-prop-types": 2,
"react/no-unused-state": 2,
"react/no-will-update-set-state": 2,
"react/prefer-es6-class": 2,
"react/prop-types": 2,
"react/require-default-props": 2,
"react/require-optimization": 2,
"react/require-render-return": 2,
"react/self-closing-comp": 2,
"react/sort-comp": 2,
"react/sort-prop-types": 2,
"react/style-prop-object": 2,
"react/void-dom-elements-no-children": 2,
"react/sort-default-props": 2,
"react/jsx-filename-extension": [
2,
{
"extensions": [".ts", ".tsx"]
}
],
"react/jsx-props-no-spreading": [
2,
{
"html": "enforce",
"custom": "enforce",
"explicitSpread": "enforce"
}
],
"react/jsx-boolean-value": 2,
"react/jsx-child-element-spacing": 2,
"react/jsx-closing-bracket-location": [1, "line-aligned"],
"react/jsx-closing-tag-location": 2,
"react/jsx-curly-spacing": 2,
"react/jsx-equals-spacing": 2,
"react/jsx-first-prop-new-line": 2,
"react/jsx-handler-names": 2,
"react/jsx-indent": [
2,
0,
{
"checkAttributes": false,
"indentLogicalExpressions": true
}
],
"react/jsx-indent-props": [2, "tab"],
"react/jsx-key": 2,
"react/jsx-max-depth": [
2,
{
"max": 10
}
],
"react/jsx-max-props-per-line": 2,
"react/jsx-no-bind": [
2,
{
"ignoreDOMComponents": false,
"ignoreRefs": false,
"allowArrowFunctions": true,
"allowFunctions": false,
"allowBind": false
}
],
"react/jsx-no-comment-textnodes": 2,
"react/jsx-no-duplicate-props": 2,
"react/jsx-no-literals": [
2,
{
"noStrings": true,
"ignoreProps": true,
"noAttributeStrings": true
}
],
"react/jsx-no-target-blank": 2,
"react/jsx-no-undef": 2,
"react/jsx-one-expression-per-line": [
2,
{
"allow": "single-child"
}
],
"react/jsx-curly-brace-presence": 2,
"react/jsx-pascal-case": 2,
"react/jsx-props-no-multi-spaces": 2,
"react/jsx-sort-props": 2,
"react/jsx-tag-spacing": [
2,
{
"closingSlash": "never",
"beforeSelfClosing": "always",
"afterOpening": "never",
"beforeClosing": "allow"
}
],
"react/jsx-wrap-multilines": 2,
"react/jsx-uses-react": 2,
"react/jsx-uses-vars": 2,
"react/no-unsafe": 2,
"eslint-plugin/require-meta-schema": 0,
"eslint-plugin/require-meta-type": 0,
"eslint-plugin/prefer-message-ids": 0,
"eslint-plugin/prefer-object-rule": 0
}
}

README

Executive Overview

The eslint setup is out of sync with prettier and the result is "errors" primarily around single quotes vs double quotes.

Run through

pnpm dlx create-next-app@latest --use-pnpm
✔ Would you like to use TypeScript? … No / Yes
✔ Would you like to use ESLint? … No / Yes
✔ Would you like to use Tailwind CSS? … No / Yes
✔ Would you like to use `src/` directory? … No / Yes
✔ Would you like to use App Router? (recommended) … No / Yes
✔ Would you like to customize the default import alias (@/*)? … No / Yes

Added .eslint.json and replaced .eslintrc.json with these files.

Added these devDependencies:

    "eslint": "^8",
    "eslint-config-next": "14.0.4",
    "eslint-config-standard": "^17.1.0",
    "eslint-config-standard-with-typescript": "^43.0.0",
    "eslint-config-unicorn": "^0.5.0",
    "eslint-plugin-cypress": "^2.15.1",
    "eslint-plugin-eslint-comments": "^3.2.0",
    "eslint-plugin-eslint-plugin": "^5.2.1",
    "eslint-plugin-github": "^4.10.1",
    "eslint-plugin-import": "^2.29.1",
    "eslint-plugin-jest": "^27.6.0",
    "eslint-plugin-jest-dom": "^5.1.0",
    "eslint-plugin-no-unsanitized": "^4.0.2",
    "eslint-plugin-prettier": "^5.1.2",
    "eslint-plugin-promise": "^6.1.1",
    "eslint-plugin-react": "^7.33.2",
    "eslint-plugin-react-hooks": "^4.6.0",
    "eslint-plugin-tailwindcss": "^3.13.1",
    "eslint-plugin-testing-library": "^6.2.0",
    "eslint-plugin-unicorn": "^50.0.1",

Result

pnpm run lint      

> [email protected] lint /Users/jherr/tmp/lint-check/lint-test
> next lint


./src/app/layout.tsx
1:31  Error: Strings must use singlequote.  @typescript-eslint/quotes
1:31  Error: Strings must use singlequote.  quotes
1:37  Error: Extra semicolon.  @typescript-eslint/semi
1:37  Error: Extra semicolon.  semi
2:23  Error: Strings must use singlequote.  @typescript-eslint/quotes
2:23  Error: Strings must use singlequote.  quotes
2:41  Error: Extra semicolon.  @typescript-eslint/semi
2:41  Error: Extra semicolon.  semi
3:8  Error: Strings must use singlequote.  @typescript-eslint/quotes
3:8  Error: Strings must use singlequote.  quotes
3:23  Error: Extra semicolon.  @typescript-eslint/semi
3:23  Error: Extra semicolon.  semi
5:33  Error: Strings must use singlequote.  @typescript-eslint/quotes
5:33  Error: Strings must use singlequote.  quotes
5:44  Error: Extra semicolon.  @typescript-eslint/semi
5:44  Error: Extra semicolon.  semi
8:10  Error: Strings must use singlequote.  @typescript-eslint/quotes
8:10  Error: Strings must use singlequote.  quotes
9:3  Error: Expected object keys to be in insensitive ascending order. 'description' should be before 'title'.  sort-keys
9:16  Error: Strings must use singlequote.  @typescript-eslint/quotes
9:16  Error: Strings must use singlequote.  quotes
9:46  Error: Unexpected trailing comma.  @typescript-eslint/comma-dangle
9:46  Error: Unexpected trailing comma.  comma-dangle
10:2  Error: Extra semicolon.  @typescript-eslint/semi
10:2  Error: Extra semicolon.  semi
12:16  Error: Missing return type on function.  @typescript-eslint/explicit-module-boundary-types
12:16  Error: Missing return type on function.  @typescript-eslint/explicit-function-return-type
13:11  Error: Unexpected trailing comma.  @typescript-eslint/comma-dangle
13:11  Error: Unexpected trailing comma.  comma-dangle
15:38  Error: Unexpected separator (;).  @typescript-eslint/member-delimiter-style
18:5  Error: Expected indentation of 2 space characters but found 4.  react/jsx-indent
19:7  Error: Expected indentation of 4 space characters but found 6.  react/jsx-indent
20:3  Error: Insert `··`  prettier/prettier
20:3  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
20:3  Error: Expected indentation of 4 space characters but found 2.  react/jsx-indent
21:4  Error: Extra semicolon.  @typescript-eslint/semi
21:4  Error: Extra semicolon.  semi

./src/app/page.tsx
1:19  Error: Replace `'next/image'` with `"next/image"`  prettier/prettier
1:31  Error: Extra semicolon.  @typescript-eslint/semi
1:31  Error: Extra semicolon.  semi
3:16  Error: Missing return type on function.  @typescript-eslint/explicit-module-boundary-types
3:16  Error: Function 'Home' has too many lines (112). Maximum allowed is 50.  max-lines-per-function
3:16  Error: Missing return type on function.  @typescript-eslint/explicit-function-return-type
5:1  Error: This line has a length of 83. Maximum allowed is 80.  max-len
5:5  Error: Expected indentation of 2 space characters but found 4.  react/jsx-indent
6:1  Error: This line has a length of 100. Maximum allowed is 80.  max-len
6:7  Error: Expected indentation of 4 space characters but found 6.  react/jsx-indent
7:1  Error: This line has a length of 305. Maximum allowed is 80.  max-len
7:9  Error: Expected indentation of 6 space characters but found 8.  react/jsx-indent
7:306  Error: Expected indentation of 8 space characters but found 6.  react/jsx-indent
7:306  Error: Strings not allowed in JSX files: "Get started by editing&nbsp;"  react/jsx-no-literals
8:7  Error: Insert `····`  prettier/prettier
9:11  Error: Ambiguous spacing before next element code  react/jsx-child-element-spacing
9:11  Error: Expected indentation of 8 space characters but found 10.  react/jsx-indent
9:49  Error: Strings not allowed in JSX files: "src/app/page.tsx"  react/jsx-no-literals
10:1  Error: Insert `··`  prettier/prettier
10:7  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
10:7  Error: Expected indentation of 8 space characters but found 6.  react/jsx-indent
11:1  Error: This line has a length of 199. Maximum allowed is 80.  max-len
11:9  Error: Expected indentation of 6 space characters but found 8.  react/jsx-indent
12:1  Error: Replace `······` with `··········`  prettier/prettier
12:7  Error: Expected indentation of 8 space characters but found 6.  react/jsx-indent
13:1  Error: This line has a length of 107. Maximum allowed is 80.  max-len
13:13  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
14:1  Error: This line has a length of 120. Maximum allowed is 80.  max-len
14:13  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
15:13  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
16:13  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
16:13  Error: Props should be sorted alphabetically  react/jsx-sort-props
17:9  Error: Insert `··`  prettier/prettier
17:9  Warning: The closing bracket must be aligned with the line containing the opening tag (expected column 7)  react/jsx-closing-bracket-location
17:10  Error: Expected indentation of 6 space characters but found 12.  react/jsx-indent
17:10  Error: Strings not allowed in JSX files: "By"  react/jsx-no-literals
18:15  Error: Replace `⏎{'·'` with `{"·"`  prettier/prettier
19:1  Error: Expected indentation of 6 space characters but found 0.  react/jsx-indent
20:9  Error: Insert `····`  prettier/prettier
20:9  Error: Expected indentation of 6 space characters but found 8.  react/jsx-indent
21:15  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
22:15  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
22:15  Error: Props should be sorted alphabetically  react/jsx-sort-props
23:15  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
23:15  Error: Props should be sorted alphabetically  react/jsx-sort-props
23:15  Error: Prop "className" is forbidden on Components  react/forbid-component-props
24:15  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
25:15  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
25:15  Error: Props should be sorted alphabetically  react/jsx-sort-props
26:15  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
26:15  Error: Props should be sorted alphabetically  react/jsx-sort-props
27:13  Warning: The closing bracket must be aligned with the line containing the opening tag (expected column 9)  react/jsx-closing-bracket-location
28:11  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
28:11  Error: Expected indentation of 6 space characters but found 10.  react/jsx-indent
29:7  Error: Insert `··`  prettier/prettier
29:7  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
29:7  Error: Expected indentation of 8 space characters but found 6.  react/jsx-indent
30:1  Error: Insert `··`  prettier/prettier
30:5  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
30:5  Error: Expected indentation of 6 space characters but found 4.  react/jsx-indent
32:1  Error: This line has a length of 633. Maximum allowed is 80.  max-len
32:7  Error: Expected indentation of 4 space characters but found 6.  react/jsx-indent
33:5  Error: Insert `····`  prettier/prettier
33:5  Error: Expected indentation of 6 space characters but found 4.  react/jsx-indent
34:1  Error: This line has a length of 82. Maximum allowed is 80.  max-len
34:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
34:11  Error: Prop "className" is forbidden on Components  react/forbid-component-props
35:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
36:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
36:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
37:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
38:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
38:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
39:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
39:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
40:7  Error: Insert `··`  prettier/prettier
40:7  Warning: The closing bracket must be aligned with the line containing the opening tag (expected column 5)  react/jsx-closing-bracket-location
41:1  Error: Insert `··`  prettier/prettier
41:5  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
41:5  Error: Expected indentation of 6 space characters but found 4.  react/jsx-indent
43:1  Error: This line has a length of 101. Maximum allowed is 80.  max-len
43:1  Error: Insert `····`  prettier/prettier
43:3  Error: Expected indentation of 4 space characters but found 2.  react/jsx-indent
44:7  Error: Insert `··`  prettier/prettier
44:7  Error: Expected indentation of 2 space characters but found 6.  react/jsx-indent
45:1  Error: This line has a length of 123. Maximum allowed is 80.  max-len
45:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
46:1  Error: This line has a length of 191. Maximum allowed is 80.  max-len
46:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
46:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
47:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
48:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
48:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
49:3  Error: Insert `······`  prettier/prettier
49:3  Warning: The closing bracket must be aligned with the line containing the opening tag (expected column 7)  react/jsx-closing-bracket-location
50:11  Error: Expected indentation of 6 space characters but found 10.  react/jsx-indent
50:55  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
50:55  Error: Strings not allowed in JSX files: "Docs"  react/jsx-no-literals
51:7  Error: Replace `Docs{'·'` with `······Docs{"·"`  prettier/prettier
51:11  Error: `{' '}` must be placed on a new line  react/jsx-one-expression-per-line
52:1  Error: This line has a length of 119. Maximum allowed is 80.  max-len
52:13  Error: Expected indentation of 10 space characters but found 12.  react/jsx-indent
52:120  Error: Expected indentation of 12 space characters but found 10.  react/jsx-indent
52:120  Error: Strings not allowed in JSX files: "-&gt;"  react/jsx-no-literals
53:1  Error: Replace `··········` with `··············`  prettier/prettier
55:7  Error: Insert `····`  prettier/prettier
55:7  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
55:7  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
56:3  Error: Insert `········`  prettier/prettier
56:3  Error: Expected indentation of 6 space characters but found 2.  react/jsx-indent
56:54  Error: Expected indentation of 2 space characters but found 10.  react/jsx-indent
56:54  Error: Strings not allowed in JSX files: "Find in-depth information about Next.js features and API."  react/jsx-no-literals
57:1  Error: Insert `··`  prettier/prettier
58:11  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
58:11  Error: Expected indentation of 2 space characters but found 10.  react/jsx-indent
59:3  Error: Insert `······`  prettier/prettier
59:3  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
59:3  Error: Expected indentation of 6 space characters but found 2.  react/jsx-indent
61:1  Error: Insert `··`  prettier/prettier
61:7  Error: Expected indentation of 2 space characters but found 6.  react/jsx-indent
62:1  Error: This line has a length of 127. Maximum allowed is 80.  max-len
62:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
63:1  Error: This line has a length of 191. Maximum allowed is 80.  max-len
63:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
63:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
64:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
65:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
65:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
66:9  Warning: The closing bracket must be aligned with the line containing the opening tag (expected column 7)  react/jsx-closing-bracket-location
67:11  Error: Expected indentation of 6 space characters but found 10.  react/jsx-indent
67:55  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
67:55  Error: Strings not allowed in JSX files: "Learn"  react/jsx-no-literals
68:7  Error: Replace `Learn{'·'` with `······Learn{"·"`  prettier/prettier
68:12  Error: `{' '}` must be placed on a new line  react/jsx-one-expression-per-line
69:1  Error: This line has a length of 113. Maximum allowed is 80.  max-len
69:1  Error: Insert `······`  prettier/prettier
69:7  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
69:114  Error: Expected indentation of 6 space characters but found 12.  react/jsx-indent
69:114  Error: Strings not allowed in JSX files: "-&gt;"  react/jsx-no-literals
70:1  Error: Insert `··`  prettier/prettier
71:13  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
71:13  Error: Expected indentation of 6 space characters but found 12.  react/jsx-indent
72:7  Error: Insert `····`  prettier/prettier
72:7  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
72:7  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
73:1  Error: Insert `··`  prettier/prettier
73:9  Error: Expected indentation of 6 space characters but found 8.  react/jsx-indent
73:60  Error: Expected indentation of 8 space characters but found 10.  react/jsx-indent
73:60  Error: Strings not allowed in JSX files: "Learn about Next.js in an interactive course with&nbsp;quizzes!"  react/jsx-no-literals
74:1  Error: Insert `··`  prettier/prettier
75:11  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
75:11  Error: Expected indentation of 8 space characters but found 10.  react/jsx-indent
76:9  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
76:9  Error: Expected indentation of 6 space characters but found 8.  react/jsx-indent
78:1  Error: Insert `··`  prettier/prettier
78:7  Error: Expected indentation of 2 space characters but found 6.  react/jsx-indent
79:1  Error: This line has a length of 146. Maximum allowed is 80.  max-len
79:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
80:1  Error: This line has a length of 191. Maximum allowed is 80.  max-len
80:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
80:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
81:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
82:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
82:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
83:9  Warning: The closing bracket must be aligned with the line containing the opening tag (expected column 7)  react/jsx-closing-bracket-location
84:11  Error: Expected indentation of 6 space characters but found 10.  react/jsx-indent
84:55  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
84:55  Error: Strings not allowed in JSX files: "Templates"  react/jsx-no-literals
85:7  Error: Replace `Templates{'·'` with `······Templates{"·"`  prettier/prettier
85:16  Error: `{' '}` must be placed on a new line  react/jsx-one-expression-per-line
86:1  Error: This line has a length of 119. Maximum allowed is 80.  max-len
86:13  Error: Expected indentation of 10 space characters but found 12.  react/jsx-indent
86:120  Error: Expected indentation of 12 space characters but found 10.  react/jsx-indent
86:120  Error: Strings not allowed in JSX files: "-&gt;"  react/jsx-no-literals
87:11  Error: Insert `····`  prettier/prettier
89:1  Error: Insert `····`  prettier/prettier
89:7  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
89:7  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
90:11  Error: Expected indentation of 6 space characters but found 10.  react/jsx-indent
90:62  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
90:62  Error: Strings not allowed in JSX files: "Explore starter templates for Next.js."  react/jsx-no-literals
91:7  Error: Insert `······`  prettier/prettier
93:9  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
93:9  Error: Expected indentation of 6 space characters but found 8.  react/jsx-indent
95:1  Error: Insert `··`  prettier/prettier
95:7  Error: Expected indentation of 2 space characters but found 6.  react/jsx-indent
96:1  Error: This line has a length of 122. Maximum allowed is 80.  max-len
96:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
97:1  Error: This line has a length of 191. Maximum allowed is 80.  max-len
97:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
97:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
98:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
99:11  Error: Expected indentation of 1 tab character but found 0.  react/jsx-indent-props
99:11  Error: Props should be sorted alphabetically  react/jsx-sort-props
100:9  Warning: The closing bracket must be aligned with the line containing the opening tag (expected column 7)  react/jsx-closing-bracket-location
101:11  Error: Expected indentation of 6 space characters but found 10.  react/jsx-indent
101:55  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
101:55  Error: Strings not allowed in JSX files: "Deploy"  react/jsx-no-literals
102:1  Error: Replace `······Deploy{'·'` with `············Deploy{"·"`  prettier/prettier
102:13  Error: `{' '}` must be placed on a new line  react/jsx-one-expression-per-line
103:1  Error: This line has a length of 119. Maximum allowed is 80.  max-len
103:13  Error: Expected indentation of 10 space characters but found 12.  react/jsx-indent
103:120  Error: Expected indentation of 12 space characters but found 10.  react/jsx-indent
103:120  Error: Strings not allowed in JSX files: "-&gt;"  react/jsx-no-literals
104:11  Error: Insert `····`  prettier/prettier
106:1  Error: Replace `······` with `··········`  prettier/prettier
106:7  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
106:7  Error: Expected indentation of 10 space characters but found 6.  react/jsx-indent
107:1  Error: Insert `··`  prettier/prettier
107:9  Error: Expected indentation of 6 space characters but found 8.  react/jsx-indent
107:60  Error: Expected indentation of 8 space characters but found 10.  react/jsx-indent
107:60  Error: Strings not allowed in JSX files: "Instantly deploy your Next.js site to a shareable URL with Vercel."  react/jsx-no-literals
108:1  Error: Insert `··`  prettier/prettier
109:11  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
109:11  Error: Expected indentation of 8 space characters but found 10.  react/jsx-indent
110:9  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
110:9  Error: Expected indentation of 6 space characters but found 8.  react/jsx-indent
111:7  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
111:7  Error: Expected indentation of 2 space characters but found 6.  react/jsx-indent
112:3  Error: Insert `··`  prettier/prettier
112:3  Error: Expected closing tag to match indentation of opening.  react/jsx-closing-tag-location
112:3  Error: Expected indentation of 4 space characters but found 2.  react/jsx-indent
113:4  Error: Insert `;`  prettier/prettier

info  - Need to disable some ESLint rules? Learn more here: https://nextjs.org/docs/basic-features/eslint#disabling-rule

None of these are actual errors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment