module.exports = { env: { browser: true, node: true, es2020: true, jest: true, //jest 사용시에만 추가 }, parser: '@typescript-eslint/parser', parserOptions: { ecmaVersion: 2021, sourceType: 'module', ecmaFeatures: { jsx: true, }, }, plugins: ['@typescript-eslint', 'react', 'prettier'], extends: [ 'airbnb', 'airbnb/hooks', 'plugin:@typescript-eslint/recommended', 'plugin:react/recommended', 'plugin:import/errors', 'plugin:import/warnings', 'plugin:import/typescript', 'prettier', 'prettier/@typescript-eslint', 'prettier/react', ], rules: { 'react/jsx-filename-extension': [ 1, { extensions: ['.js, .jsx, .ts', '.tsx'] }, ], 'import/extensions': 'off', 'react/prop-types': 'off', 'jsx-a11y/anchor-is-valid': 'off', 'react/jsx-props-no-spreading': ['error', { custom: 'ignore' }], 'prettier/prettier': 'error', 'arrow-body-style': 'off', //eslint-plugin-prettier와 충돌하는 eslint 코어 룰 비활성화 'react/no-unescaped-entities': 'off', 'import/no-cycle': [0, { ignoreExternal: true }], 'prefer-const': 'off', // needed because of https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-use-before-define.md#how-to-use & https://stackoverflow.com/questions/63818415/react-was-used-before-it-was-defined 'no-use-before-define': 'off', '@typescript-eslint/no-use-before-define': [ 'error', { functions: false, classes: false, variables: true }, ], 'no-restricted-imports': [ 'error', { patterns: ['@material-ui/*/*/*', '!@material-ui/core/test-utils/*'], }, ], }, settings: { 'import/resolver': { 'babel-module': { extensions: ['.js', '.jsx', '.ts', '.tsx'], }, node: { extensions: ['.js', '.jsx', '.ts', '.tsx'], paths: ['src'], }, }, }, }