UNPKG

@strapi-community/eslint-config

Version:

<div align="center"> <h1>@strapi-community/eslint-config</h1>

268 lines (266 loc) 7.41 kB
module.exports = { ignorePatterns: ["build", "node_modules", ".cache"], overrides: [ { files: ['*.json'], extends: [ "plugin:jsonc/recommended-with-json", ], }, { files: ['webpack.config.js'], env: { es2021: true, commonjs: true, }, }, { files: ['package.json'], parser: 'jsonc-eslint-parser', rules: { 'jsonc/sort-keys': [ 'error', { pathPattern: '^$', order: [ 'name', 'type', 'version', 'private', 'packageManager', 'description', 'keywords', 'license', 'author', 'repository', 'funding', 'main', 'module', 'types', 'unpkg', 'jsdelivr', 'exports', 'files', 'bin', 'sideEffects', 'scripts', 'peerDependencies', 'peerDependenciesMeta', 'dependencies', 'optionalDependencies', 'devDependencies', 'husky', 'lint-staged', 'eslintConfig', ], }, { pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$', order: { type: 'asc' }, }, ], }, }, { files: ['src/**/*.js'], parser: "@babel/eslint-parser", extends: [ "eslint:recommended", "airbnb-base", "plugin:node/recommended", "prettier", ], env: { commonjs: true, es2021: true, node: true, browser: false, }, excludedFiles: [ '*.tests.js', 'src/admin/**/*.js', '**/admin/src/**/*.js', ], parserOptions: { requireConfigFile: false, ecmaVersion: 'latest', ecmaFeatures: { experimentalObjectRestSpread: true, jsx: false, }, }, globals: { strapi: true, }, rules: { strict: ["error", "global"], // airbnb overrides "import/no-unresolved": "off", "import/no-extraneous-dependencies": "off", "node/no-missing-require": "off", "node/no-extraneous-require": "off", "no-continue": "off", "no-restricted-syntax": [ "error", { selector: "LabeledStatement", message: "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.", }, { selector: "WithStatement", message: "`with` is disallowed in strict mode because it makes code impossible to predict and optimize.", }, ], // strapi backend rules "no-param-reassign": ["error", { props: false }], "global-require": "off", "no-return-await": "error", "object-shorthand": [ "error", "always", { avoidExplicitReturnArrows: true }, ], "import/order": "error", "import/no-cycle": "error", "import/no-useless-path-segments": "error", "import/first": "error", "import/newline-after-import": "error", "node/exports-style": ["error", "module.exports"], "node/no-new-require": "error", "node/no-path-concat": "error", "node/no-callback-literal": "error", "node/handle-callback-err": "error", "one-var": ["error", "never"], }, }, { files: ['src/admin/**/*.js', '**/admin/src/**/*.js'], excludedFiles: [ 'src/admin/webpack.config.js', ], plugins: ["react", "react-hooks", "import", "jsx-a11y"], // parser: "@babel/eslint-parser", extends: [ "airbnb", "eslint:recommended", "plugin:react/recommended", "prettier", ], env: { node: false, browser: true, commonjs: false, es2021: true, jest: true, mocha: true, }, globals: { strapi: true, }, parserOptions: { requireConfigFile: false, ecmaVersion: 'latest', ecmaFeatures: { jsx: true, }, sourceType: "module", }, rules: { strict: ["error", "never"], "import/no-unresolved": 0, "import/extensions": ["off"], "generator-star-spacing": 0, "no-console": 0, "require-atomic-updates": 0, "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": "error", "arrow-body-style": 0, "arrow-parens": 0, camelcase: 0, "comma-dangle": 0, "consistent-return": [ 2, { treatUndefinedAsUnspecified: true, }, ], "template-curly-spacing": 0, "func-names": ["error", "never"], "function-paren-newline": 0, "implicit-arrow-linebreak": 0, "import/no-extraneous-dependencies": 0, "import/no-named-as-default": 0, "import/order": 2, "import/prefer-default-export": "off", "jsx-a11y/click-events-have-key-events": 1, "max-len": [ 2, { code: 120, ignoreComments: true, ignoreUrls: true, ignoreTrailingComments: true, ignoreStrings: true, ignoreTemplateLiterals: true, }, ], "newline-before-return": 2, "no-confusing-arrow": 0, "no-else-return": 1, "no-nested-ternary": ["error"], "no-return-assign": 0, "no-param-reassign": 0, "no-plusplus": 0, "no-shadow": 0, "no-underscore-dangle": 0, "no-use-before-define": [ "error", { functions: false, classes: false, variables: false }, ], "object-curly-newline": [2, { multiline: true, consistent: true }], "one-var": ["error", "never"], "operator-linebreak": 0, "padding-line-between-statements": [ "error", { blankLine: "always", prev: "*", next: "if" }, { blankLine: "any", prev: "block-like", next: "if" }, ], "prefer-arrow-callback": 0, "prefer-const": 0, "prefer-destructuring": 0, "prefer-object-spread": 0, "prefer-spread": 0, "space-before-function-paren": [ "error", { anonymous: "never", named: "never", asyncArrow: "always", }, ], "react/destructuring-assignment": 0, "react/jsx-filename-extension": [1, { extensions: [".js", ".jsx"] }], "react/forbid-prop-types": 0, "react/no-unused-prop-types": 2, "react/jsx-props-no-spreading": 0, "react/jsx-one-expression-per-line": 0, "react/state-in-constructor": 0, "react/static-property-placement": 0, "react/display-name": 0, "react/jsx-wrap-multilines": 0, }, }, { files: ['*.js'], env: { es2021: true, commonjs: true, }, parserOptions: { ecmaVersion: 'latest', }, }, ], };