12P by haenah 18일전 | ★ favorite | 댓글과 토론

eslint의 sort-keys rule이 auto-fixable하지 않은 관계로 npm에는 eslint-plugin-sort-keys-fixeslint-plugin-sort-destructure-keys같이 auto-fixable한 기능을 추가한 플러그인들이 각각 주간 다운로드 수 33만, 19만을 넘기며 인기가 많습니다. 하지만 두 플러그인에는 문제점들이 있습니다.
sort-keys-fix의 경우 eslint에서 포크하여 수정한 결과 property 노드에서 스왑하는 식으로 수정하기 때문에(코드) O(N^2)의 시간 복잡도를 가져 수정에 오랜 시간이 걸립니다. 그리고 sort-destructure-keys의 경우 비교 과정에서 중복 계산이 많아(코드) 오래 걸리는 부분이 있습니다.
그래서 eslint-plugin-sort-properties를 만들어 이 문제들을 해결했는데, 주요 기능들은 아래와 같습니다.

  1. fix의 경우 Array.prototype.sort 사용하도록 하여 시간복잡도 개선. sort-keys-fix보다 10배 가량 빠름
  2. sort-destructure-keys보다 rule 적용 시간 50배 이상 빠름
  3. typescript type literal, interface도 정렬 가능하게 함(tseslint parser 명시 필요)
  4. eslint-plugin-react의 jsx-sort-props 룰에서 콜백을 뒤로 빼는 기능이 있어 이를 들여옴
  5. 주석도 property의 일부로서 위치를 같이 이동하도록 하여 깨짐을 방지할 수 있게 설정 가능
    속도 측정 방식의 경우 벤치마크에 레퍼런스가 있습니다.