@amcef/eslint-config-react
Version:
AMCEF ESLint config for React apps (v17+)
84 lines (83 loc) • 1.99 kB
JavaScript
module.exports = {
env: {
browser: true,
es6: true,
},
extends: [
'plugin:react/recommended',
'plugin:prettier/recommended',
'plugin:import/errors',
'plugin:import/warnings',
'plugin:import/typescript',
],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
},
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 2018,
sourceType: 'module',
},
plugins: ['react', 'prettier'],
settings: {
'import/resolver': {
typescript: {},
},
'react': {
version: 'detect',
},
},
rules: {
'prettier/prettier': [
'error',
{
singleQuote: true,
printWidth: 100,
tabWidth: 2,
useTabs: false,
quoteProps: 'consistent',
endOfLine: 'auto',
},
],
'import/order': [
'error',
{
'groups': [['builtin', 'external'], 'internal', ['index', 'sibling', 'parent', 'object']],
'pathGroupsExcludedImportTypes': ['builtin'],
'pathGroups': [
{
pattern: '@**/**',
group: 'external',
position: 'after',
},
],
'newlines-between': 'always-and-inside-groups',
'alphabetize': {
order: 'asc',
caseInsensitive: true,
},
},
],
'no-var': 'error',
'prefer-const': 'error',
'camelcase': 'error',
'quotes': ['error', 'single'],
'jsx-quotes': ['error', 'prefer-double'],
'prefer-template': 'error',
'prefer-arrow-callback': 'error',
'no-useless-rename': 'error',
'no-duplicate-imports': 'error',
'require-jsdoc': 0,
'object-curly-spacing': ['error', 'always'],
'object-property-newline': 'error',
'import/no-named-as-default-member': 0,
'import/no-named-as-default': 0,
'react/display-name': 0,
'react/jsx-uses-react': 'off',
'react/react-in-jsx-scope': 'off',
},
};