ESLint 错误地缩进了多行参数 JavaScript 函数的单 return 语句

ESLint wrongly indents single-return statement of multiline param JavaScript function

我有这个带有多行参数和单体的函数 return(因为它们很长)。这是一个普通的 JS 文件:

const myFunction = (
    looooooooongParam1,
    looooooooongParam2,
    looooooooongParam3,
    looooooooongParam4,
) => (
    looooooooongParam1
    + looooooooongParam2
    + looooooooongParam3
    + looooooooongParam4
    + looooooooongParam4
);

ESLint 格式错误地将 returned 行向右移动。然后它抱怨缩进是错误的(当然是!):

我的 ESLint 规则是:

module.exports = {
    env: {
        browser: true,
        es2020: true,
    },

    extends: [
        'plugin:react/recommended',
        'airbnb',
        'plugin:@typescript-eslint/eslint-recommended',
        'plugin:@typescript-eslint/recommended',
    ],

    parser: '@typescript-eslint/parser',

    parserOptions: {
        ecmaFeatures: {
            jsx: true,
        },
        ecmaVersion: 11,
        sourceType: 'module',
    },

    plugins: [
        'react',
        '@typescript-eslint',
    ],

    rules: {
        'react/jsx-filename-extension': [2, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }],
        'react/jsx-indent': ['error', 4],
        indent: ['error', 4],
        'import/extensions': [
            'error',
            'ignorePackages',
            {
                js: 'never',
                jsx: 'never',
                ts: 'never',
                tsx: 'never',
                mjs: 'never',
            },
        ],

        'no-unused-vars': 'off',
        '@typescript-eslint/no-unused-vars': 'error',
    },

    settings: {
        'import/resolver': {
            node: {
                extensions: [
                    '.js',
                    '.jsx',
                    '.ts',
                    '.tsx',
                ],
            },
        },
    },
};

我使用 VSCode 并在保存时使用 eslint 进行格式化。 VSCode相关设置:

关于如何使 ESLint 将 return 行保持在左侧的任何想法?

编辑 1: 在 VSCode 中保存文件时,我看到代码正确缩进了大约 0.2 秒,然后缩进不正确。

编辑 2: 如果我的参数较少,在单行上,缩进工作正常,所以 只有在多行时才会发生这种情况参数;.

在我对文件手动 运行 eslint --fix 后,我注意到它工作正常,所以我发现 VSCode 有自己的格式化程序并且与什么重叠ESLint 在做.

解决方案: 我必须做 "javascript.format.enable": false 来禁用 VSCode 的 JS 格式化程序格式化我的 JS 文件,只让 ESLint 做它。

注意:同样的故事适用于 TSX 文件,我不得不"typescript.format.enable": false只让 ESLint 格式化 TSX 代码。