extends: yoast root: true parserOptions: ecmaVersion: 2018 sourceType: module settings: react: version: "18.2" ignorePatterns: - "packages/*/build/*" rules: no-prototype-builtins: 0 comma-dangle: - error - arrays: always-multiline objects: always-multiline imports: always-multiline exports: always-multiline functions: never overrides: - files: - "packages/*/tests/**/*.js" - "packages/*/spec/**/*.js" # Temporary exclusion: - "packages/components/a11y/tests/**/*.js" env: jest: true rules: no-restricted-imports: "off" - files: - "packages/components/**/*.js" rules: react/jsx-no-bind: 1 react/require-default-props: 1 react/default-props-match-prop-types: 1 react/no-unused-prop-types: 1 require-jsdoc: 1 import/no-unresolved: [ "error", { ignore: [ "^@yoast/(helpers|style-guide)" ] } ] - files: - "packages/social-metadata-forms/**/*.js" rules: import/no-unresolved: [ "error", { ignore: [ "^@yoast/(components|helpers|replacement-variable-editor|style-guide)" ] } ] - files: - "packages/social-metadata-previews/**/*.js" rules: import/no-unresolved: [ "error", { ignore: [ "^@yoast/(components|replacement-variable-editor|social-metadata-forms|style-guide)" ] } ] - files: - "packages/yoast-components/**/*.js" rules: complexity: [ 1, 6 ] # A wrapping label is not necessary when there already is an htmlFor attribute. jsx-a11y/label-has-for: [ "error", { required: "id" } ] require-jsdoc: 1 react/button-has-type: 1 react/default-props-match-prop-types: 1 react/no-unused-prop-types: 1 react/no-access-state-in-setstate: 1 react/no-unused-state: 1 react/jsx-no-bind: 1 react/jsx-no-target-blank: 1 react/require-default-props: 1 react/forbid-foreign-prop-types: 1 import/no-duplicates: 0 import/named: 0 import/no-extraneous-dependencies: 0 import/no-unresolved: [ "error", { ignore: [ "^@yoast/(analysis-report|components|helpers|replacement-variable-editor|search-metadata-previews|style-guide)" ] } ] env: jest: true - files: - "packages/**/tests/**/*Test.js" rules: no-console: 0 react/jsx-no-bind: 0