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 代码。
我有这个带有多行参数和单体的函数 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 代码。