kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

2023-07-23 - linter とかの config が諸々 extends してくると読み解くのが億劫だから、ツール自身に説明させたい #233

Closed kachick closed 1 year ago

kachick commented 1 year ago

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 に噛ませやすい

npx eslint --print-config src/main.ts | jq --sort-keys .rules

この辺を記録しておいて、 diff なり https://github.com/dandavison/delta に食わせると差分がわかる。

delta --side-by-side no-tslint.json no-eslint.json

・・・と断言したかったんだけれど、この手の diff は structured diff 的なツールでも完璧にわかりやすくはなってくんないかなー 更に --print-config がいろんなファイルを指定するとかじゃなく、現在 active な config に基づいてこの file を読んだ時にはこうなったみたいな入出力らしく、ちょっと気軽には使いづらいかも・・・

他のこの手のツールも大体対応してそう、ちょっと調べた限り

kachick commented 1 year ago

Prettier => Dprint はほぼほぼメリットしか感じなかったんだけど、 eslint は丁寧で役立つルールが多いので捨てるのに躊躇いがあった。 しかし動作速度や依存性管理、config 追従への面倒さ、細かい lint が役立つ頻度を考えて一旦 deno_lint に差し替えまくってみた。やはり諸々楽・・・このまま eslint や typescript-eslint の strict 相当まで選択肢増えてくれるとより嬉しいんだけど

kachick commented 4 months ago

linter ではないのでツール特性が違うけど、敢えてそういう機能を設けないという判断を alacritty がしててそういうもんですかと思った https://github.com/alacritty/alacritty/issues/7147

kachick commented 4 months ago

https://eslint.org/blog/2024/04/eslint-config-inspector/

v9 でまた結構面倒くさそうな migration が必要そうだなーと思ったら eslint --inspect-config なるものが用意されていた。 お、便利そうやんと思ったもののそもそも既存の peer dependency との兼ね合いでローカルインストールが出来ないという、依存関係チェックをするための依存関係が壊れてるみたいな状況でぐへーだった。 まぁグローバルインストール前提なのか・・・

kachick commented 3 months ago

yamlfmt でまさにこれがほしい時に無かったので取り入れてもらった https://github.com/google/yamlfmt/commit/e5bdc909124ef84e6f733b4d89087b4e82987d20