Prettier не применяется, когда eslint обвиняет max-length и .prettierignore не работает

#reactjs #eslint #prettier #typescript-eslint

Вопрос:

Случай 1 ( PrintWidth ):

В этом случае происходит следующее: я настроил ширину печати в .prettierrc файле, в vscode settigns.json и в .eslintrc.js . Однако при достижении того max-length , что в данном случае есть 120 , prettier то не применяется его укладка.

Случай 2 ( .prettierignore )

Программа prettier просто игнорирует этот файл и не применяет содержащиеся в нем правила.

Желаемое разрешение для случая 1:

Когда eslint проверяется, что код находится на пределе размера строки, который в данном случае составляет 120 и превышает предел, он «разбивает» код, например, понижая свойства JSX components и т. Д.

Желаемое разрешение для случая 2:

Что prettier пользователь может использовать .prettierignore файл

МОИ НАСТРОЙКИ VSCODE:

 "editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.rulers": [120, 120]
 

МОЯ БОЛЕЕ КРАСИВАЯ КОНФИГУРАЦИЯ:

 {
    "printWidth": 120,
    "tabWidth": 2,
    "useTabs": true,
    "semi": true,
    "singleQuote": true,
    "jsxSingleQuote": true,
    "jsxBracketSameLine": false,
    "bracketSpacing": true,
    "arrowParens": "always",
    "endOfLine": "lf",
    "quoteProps": "as-needed",
    "trailingComma": "none"
}
 

МОЯ КОНФИГУРАЦИЯ ESLINTRC:

 module.exports = {
    env: {
        browser: true,
        es2021: true
    },
    extends: [
        'plugin:react/recommended',
        'plugin:react-hooks/recommended',
        'plugin:prettier/recommended',
        'plugin:import/errors',
        'plugin:import/warnings',
        'react-app',
        'react-app/jest',
        'airbnb'
    ],
    parser: '@typescript-eslint/parser',
    parserOptions: {
        ecmaFeatures: {
            jsx: true
        },
        ecmaVersion: 5,
        sourceType: 'module'
    },
    plugins: ['react', 'react-hooks', 'prefer-arrow', 'prettier', '@typescript-eslint'],
    settings: {
        react: {
            version: 'detect'
        },
        'import/resolver': {
            node: {
                paths: ['src'],
                moduleDirectory: ['node_modules', 'src/'],
                extensions: ['.js', '.jsx', '.ts', '.tsx']
            }
        }
    },
    overrides: [
        {
            files: ['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx'],
            plugins: ['@typescript-eslint'],
            rules: {
                'no-use-before-define': 'off',
                '@typescript-eslint/no-use-before-define': ['error']
            }
        }
    ],
    ignorePatterns: ['src/assets/images/*', 'src/assets/fonts/*'],
    rules: {
        '@typescript-eslint/no-unused-vars': ['error'],
        'prettier/prettier': 'error',
        'arrow-body-style': 'off',
        'arrow-parens': ['error', 'always'],
        'object-curly-newline': 'off',
        'no-tabs': 0,
        indent: [2, 'tab', { SwitchCase: 1 }],
        'comma-dangle': ['error', 'never'],
        'max-len': ['error', { code: 120 }],
        'jsx-quotes': ['error', 'prefer-single'],
        'implicit-arrow-linebreak': 'off',
        'operator-linebreak': [
            'error',
            'after',
            {
                overrides: {
                    ':': 'before'
                }
            }
        ],
        'react-hooks/rules-of-hooks': 'error', // Checks rules of Hooks
        'react-hooks/exhaustive-deps': 'warn', // Checks effect,
        'react/jsx-indent-props': 'off',
        'react/react-in-jsx-scope': 'off',
        'react/jsx-props-no-spreading': 'off',
        'react/jsx-boolean-value': 'off',
        'react/jsx-indent': ['error', 'tab', { checkAttributes: true, indentLogicalExpressions: true }],
        'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }],
        'react/jsx-wrap-multilines': [
            'error',
            {
                declaration: 'parens-new-line',
                assignment: 'parens-new-line',
                return: 'parens-new-line',
                arrow: 'parens-new-line',
                condition: 'parens-new-line',
                logical: 'parens-new-line',
                prop: 'parens-new-line'
            }
        ],
        'prefer-arrow-callback': 'off',
        'prefer-arrow/prefer-arrow-functions': [
            'error',
            {
                disallowPrototype: true,
                singleReturnOnly: false,
                classPropertiesAllowed: false
            }
        ],
        'import/prefer-default-export': 'off',
        'import/extensions': [
            'error',
            'ignorePackages',
            {
                js: 'never',
                jsx: 'never',
                ts: 'never',
                tsx: 'never'
            }
        ]
    }
};
 

MY ERROR