【发布时间】:2019-10-10 07:45:40
【问题描述】:
我正在设置我的 React Redux 项目以将 ESLint 与 Airbnb 配置和 Prettier 一起使用。我一直在按照我想要的方式修改某些内容,但现在我遇到了我似乎无法修复的 switch 和 case 语句的缩进问题。
我正在 VSCode 中编辑我的项目。我点击错误并使用 ESLint 修复,将缩进减少 4 个空格,但随后 Prettier 出现更多错误,要求将所有内容重新缩进 4 个空格。
我想改变的一个关键是缩进:我想为制表符使用 4 个空格,并相应地调整了我的设置。我对 switch/case 缩进没有强烈的意见(从 switch 缩进的 case 更可取,但无论如何),我只是不想得到错误。
我已经安装了:
prettier
eslint
eslint-config-airbnb
eslint-plugin-import
eslint-plugin-jsx-a11y
eslint-plugin-react
eslint-import-resolver-webpack
eslint-config-prettier
eslint-plugin-prettier
我的.eslintrc.json 文件的相关部分:
{
"extends": ["airbnb", "prettier", "prettier/react"],
"plugins": ["react", "prettier"],
"rules": {
"react/jsx-filename-extension": [
1,
{
"extensions": [".js", "jsx"]
}
],
"prettier/prettier": "error",
"indent": ["error", 4, { "SwitchCase": 1 }],
"react/jsx-indent": ["error", 4],
"react/jsx-indent-props": ["error", 4],
"class-methods-use-this": 0,
"no-else-return": 0,
"no-plusplus": [2, { "allowForLoopAfterthoughts": true }],
"no-param-reassign": 0
},
package.json 中的其他设置(需要正确设置标签宽度):
"prettier": {
"tabWidth": 4
}
还有代码,cmets 会指出哪些行出现错误(这是针对刽子手游戏的):
switch (action.type) {
case GUESS_LETTER:
return Object.assign(
{},
state,
state.guessWord.includes(action.guessLetter)
? addCorrectGuess(
state.rightLetters.slice(), // <-- error here!
action.guessLetter, // <-- error here!
state.guessWord // <-- error here!
) // <-- error here!
: addWrongGuess(
state.wrongLetters.slice(), // <-- error here!
action.guessLetter // <-- error here!
) // <-- error here!
);
我第一次尝试将{ "SwitchCase": 1 } 添加到 ESLint 配置文件中。这减少了错误的数量(几乎是整个块),但仍然存在错误。我无法弄清楚冲突的确切位置。
[更新] 令我永远感到羞耻的是,我相信我发现了问题所在。我只是从 ESLint 配置中删除了意图的配置。我删除了这个:
"indent": ["error", 4, { "SwitchCase": 1 }],
"react/jsx-indent": ["error", 4],
"react/jsx-indent-props": ["error", 4],
现在它似乎表现正常。我认为这是因为它在尝试处理缩进时搞砸了 Prettier。我只需要 Prettier 的配置。
课程:通过在发布前删除可能导致冲突的配置进行更多测试。
【问题讨论】:
标签: eslint prettier eslint-config-airbnb