titicacadev/triple-config-kit

삼항 연산자 내에 object 사용 시 룰이 충돌하는 이슈가 있습니다.

Closed this issue · 10 comments

const user = ctx.req
  ? {
    name: ctx.req.headers['x-forwarded-user'],
    email: ctx.req.headers['x-forwarded-email'],
    groups: ctx.req.headers['x-forwarded-groups'],
  }
  : undefined

여기서 prettier랑 indent의 룰이 충돌하는 이슈가 있습니다.
prettier는 object 안에 있는 라인들 공백 두 칸 더 두라고 하고, indent는 그러면 안된다고 하네요... 어떻게 해결할까요?

AS-IS Standard Rule

{
  ...
  indent: [
      'error',
      2,
      {
        SwitchCase: 1,
        VariableDeclarator: 1,
        outerIIFEBody: 1,
        MemberExpression: 1,
        FunctionDeclaration: { parameters: 1, body: 1 },
        FunctionExpression: { parameters: 1, body: 1 },
        CallExpression: { arguments: 1 },
        ArrayExpression: 1,
        ObjectExpression: 1,
        ImportDeclaration: 1,
        flatTernaryExpressions: false,
        ignoreComments: false,
      },
    ],
   ...
}

prettier 설정은 특별한게 없고, "tabWidth": 2 이 규칙에 따라 indent 가 추가된것 같습니다.

indent Rule detail

이 케이스는 예외로 보고 무시 처리하는게 어떨까 합니다. 세부적인 indent 를 조정하기 어려워 보이네요.

  • 1️⃣ - ignoredNodes: ['ConditionalExpression > ObjectExpression'], 룰 추가
    • 삼항연산자 하위의 객체 표현식에 대해서는 indent rule 을 무시한다.

로 의견 드립니다.
다른 의견 있으시면, 번호 추가해서 올려주시거나, 제 의견에 동의하신다면 :one: 번호 찍어주세요 ㅎ
cc) @tubeheesu

1️⃣
넵 감사합니다! ㅎㅎ

1️⃣ 일단은 Prettier에서 customize가 안 되는 영역일 듯 하여.. 다른 방법이 없거나 있더라도 엄청나게 어려워보이네요 ㅠ

1️⃣

1️⃣

1️⃣

1️⃣ 🍏

1 번으로 가결되었습니다~~~

#15 (comment)
Screen Shot 2019-09-02 at 1 23 49 PM

위 이슈 처럼 예외 케이스가 많아서, 아래와 같이 수정하겠습니다~

ignoredNodes: ['ConditionalExpression > *'],

3항 연산자 하위의 indent 에 대해서는 eslint 에서 무시한다.