散髪
朝から散髪した. 超偉い.
乱数調整向けタイマー (rocketimer)
コードべースリファクタリングしたり, ESLintの設定 (主に @typescript-eslint 関連のrule) 見直したりしてた. 気軽に @typescript-eslint のrule使っていくと型情報要求されまくってlintに時間掛かりがちなので, opinionatedなものは可能な限り避け, bad practiceを検知できるruleを中心に入れるという方針でruleを追加していた. TIMING=1 yarn run eslint
とかするとどのruleに時間が掛かってるか分かって便利です.
TypeScriptとパフォーマンス
rocketimerではmaterial-uiを使っているのだけど, material-uiはビルドや型検査に時間が掛かることが以前から知られていて *1*2*3 , 件のプロジェクトでもビルドが遅くなったり, tsserverの反応が遅かったりと影響が出ている. 常に遅い訳ではなくて, TSX書いてる時は数秒待たされるけど, ただのTS書いてる時は即座にレスポンスが返ってくるという感じ.
めちゃめちゃ困っている訳ではないけど, TSXちょろっと書く度に数秒待たされるのまあまあしんどいので, 改善できると嬉しい. 無闇に最適化するのは危険だけど, まあ困ったときの切り札として最適化テクニックを学ぶのは悪いことではないだろうと思って, 今日は色々それっぽい情報調べてた. 明日ビルド速度測定する環境構築しつつ, TS 3.9RCに上げたり, tsconfig.json弄ったりしてビルド速度爆速化してみる.
Speed Improvements良さそう / 他3件のコメント https://t.co/9D7CBd2Jdh “Announcing TypeScript 3.9 Beta | TypeScript” (21 users) https://t.co/0QZYs2Huot
— mizdra (@mizdra) 2020年5月3日
TSのコンパイルを高速化するための公式ガイド. コードベースの分割, include/excludeの推奨設定, インクリメンタルコンパイル, ts-loader併用時の高速化テクニック, 並列コンパイル, 問題の特定方法など. 超便利. / “Performance · microsoft/TypeScript Wiki · GitHub” https://t.co/ivCRYAXgGh
— mizdra (@mizdra) 2020年5月3日
“Solution Style” tsconfig.json
TS 3.9でrelease予定の「“Solution Style” tsconfig.json」とかいう新機能, 便利そうだった.
今まで同じディレクトリにtsconfig.json置こうとするとtsconfig.frontend.json, tsconfig.backend.jsonみたいに名前を変える必要があったのだけど, そうするとtsserverが設定ファイル検知できない問題があって, これはそれを解決してくれそう
— mizdra (@mizdra) 2020年5月3日
tsconfig.referencesはTS 3.0からあって, それが3.9でtsserverからも解釈されるようになったということっぽい
— mizdra (@mizdra) 2020年5月3日