eslint の sort-keys rule は auto-fixable ではないため、npm では eslint-plugin-sort-keys-fix や eslint-plugin-sort-destructure-keys のように auto-fixable な機能を追加したプラグインが、それぞれ週間ダウンロード数 33 万、19 万を超える人気を集めています。ですが、この 2 つのプラグインには問題点があります。
sort-keys-fix の場合、eslint をフォークして修正した結果、property ノードでスワップする形で修正しているため(コード)、O(N^2) の時間計算量となり、修正に長い時間がかかります。そして sort-destructure-keys の場合は、比較処理で重複計算が多く(コード)、時間がかかる部分があります。
そこで eslint-plugin-sort-properties を作成してこれらの問題を解決しました。主な機能は以下のとおりです。
- fix では Array.prototype.sort を使うようにして時間計算量を改善。
sort-keys-fixより約 10 倍高速 - sort-destructure-keys より rule 適用時間が 50 倍以上高速
- typescript の type literal、interface も並び替え可能にした(tseslint parser の明示が必要)
- eslint-plugin-react の jsx-sort-props ルールにある、コールバックを後ろに回す機能を取り入れた
- コメントも property の一部として位置を一緒に移動することで、崩れを防げるように設定可能
速度測定方法については ベンチマーク にリファレンスがあります。
まだコメントはありません。