Closed kachick closed 1 year ago
Prettier => Dprint はほぼほぼメリットしか感じなかったんだけど、 eslint は丁寧で役立つルールが多いので捨てるのに躊躇いがあった。 しかし動作速度や依存性管理、config 追従への面倒さ、細かい lint が役立つ頻度を考えて一旦 deno_lint に差し替えまくってみた。やはり諸々楽・・・このまま eslint や typescript-eslint の strict 相当まで選択肢増えてくれるとより嬉しいんだけど
linter ではないのでツール特性が違うけど、敢えてそういう機能を設けないという判断を alacritty がしててそういうもんですかと思った https://github.com/alacritty/alacritty/issues/7147
https://eslint.org/blog/2024/04/eslint-config-inspector/
v9 でまた結構面倒くさそうな migration が必要そうだなーと思ったら eslint --inspect-config
なるものが用意されていた。
お、便利そうやんと思ったもののそもそも既存の peer dependency との兼ね合いでローカルインストールが出来ないという、依存関係チェックをするための依存関係が壊れてるみたいな状況でぐへーだった。
まぁグローバルインストール前提なのか・・・
yamlfmt でまさにこれがほしい時に無かったので取り入れてもらった https://github.com/google/yamlfmt/commit/e5bdc909124ef84e6f733b4d89087b4e82987d20
typescript-eslint の v6 が出た時に recommended な preset config ? の定義とか組み合わせに大分違いが出たようで、再度調べる事になってぐぬぬだった
https://typescript-eslint.io/blog/announcing-typescript-eslint-v6/#reworked-configuration-names
そもそも config を組み合わせて書いたところで、なんもエラーを吐かないと動かし方が間違ってるのか不安になってくる。そんでわざとエラーを含んだコード書き足してエラーが出る出ないを確認してほっとしたりする。不毛である extends で多重継承みたいになった結果、結局どういう定義が最終的に使われてるのかようわからないというところにもこの一端があるのだけれど、この辺は流石にツール自体にリスト吐くオプション有るんだろうなと思ったら、やっぱ
--print-config
という名前であった。定義ファイル自体が cjs だろうと YAML だろうと最終的にはJSONとして吐き出してくれるので、jq に噛ませやすいこの辺を記録しておいて、 diff なり https://github.com/dandavison/delta に食わせると差分がわかる。
・・・と断言したかったんだけれど、この手の diff は structured diff 的なツールでも完璧にわかりやすくはなってくんないかなー 更に --print-config がいろんなファイルを指定するとかじゃなく、現在 active な config に基づいてこの file を読んだ時にはこうなったみたいな入出力らしく、ちょっと気軽には使いづらいかも・・・
他のこの手のツールも大体対応してそう、ちょっと調べた限り
dprint output-resolved-config
tsc --showConfig
rubocop --show-cops