问答

Prettier 和 ESLinit 在 swtich case 缩进上不兼容,该如何解决

作者:admin 2021-05-07 我要评论

接手一套遗留项目,用了 eslint ,规则如下: {'react/display-name': 0,'react/prop-types': 0,'camelcase': 0,'eqeqeq': 0,'max-len': ['error', 120],'comma-...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

接手一套遗留项目,用了 eslint ,规则如下:

{
'react/display-name': 0,
'react/prop-types': 0,
'camelcase': 0,
'eqeqeq': 0,
'max-len': ['error', 120],
'comma-dangle': ['error', 'always-multiline'],
'space-before-function-paren': ['error', 'never'],
'object-curly-spacing': ['error', 'never'],
'arrow-parens': ['error', 'as-needed'],
indent: ['error', 2],
quotes: ['error', 'single'],
'no-console': 0,
'react/jsx-no-bind': 0,
'react/no-did-update-set-state': 0,
}

项目没有用到 prettier ,相信是依赖 eslint src/js/ --fix 来格式化代码,但是项目代码量非常大且老旧,执行一次命令需要约三分钟,效率过低。由于不希望修改项目原有的 eslint 配置,所以我自己配置了 .prettierrc 给自己用:

{
  "printWidth": 120,
  "tabWidth": 2,
  "singleQuote": true,
  "semi": false,
  "bracketSpacing": false,
  "trailingComma": "es5",
  "jsxSingleQuote": true
}

基本上 Prettier 和 ESLinit 的格式已经非常接近了,就是在 switch 语句的缩进格式上不兼容:

switch (name) {
  case user:
    return true
  default:
    return false

ESLinit 要求 switch 和 case 必须对齐,而 Prettier 会让 case 缩进一个单位。所以问题来了,能否在不修改 ESLinit 配置的情况下,让 Prettier 不缩进 case 关键字呢?

我查阅过 Prettier 文档,似乎没有对 case 有配置,如果有请告诉我,或者有其他解决办法也感谢分享一下。

PS:其实我有想到临时的解决方案,不完美但是能用。给遇到同类问题的朋友一个解决方案,就是用

/* eslint-disable indent */
/* eslint-enable indent */

把 switch 代码块包裹起来,这样此区域内的缩进检查就不生效了,慎用。欢迎讨论其他解决方案。

###

我的做法是修改了eslint的缩进

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • Prettier 和 ESLinit 在 swtich case

    Prettier 和 ESLinit 在 swtich case

  • 目前我从php转go语言,想直接选择最好

    目前我从php转go语言,想直接选择最好

  • 关于数据库商品库存的架构设计问题

    关于数据库商品库存的架构设计问题

  • 微服务架构中,单个微服务不向外网开放

    微服务架构中,单个微服务不向外网开放

腾讯云代理商
海外云服务器