Madogiwa Blog

主に技術系の学習メモに使っていきます。

Git管理されたプロジェクト内の配下のTypeScriptプロジェクトだけ型チェックを行うスクリプトメモ📝

Git管理されたプロジェクトにいくつかTypeScriptのプロジェクトがあり、それらをまとめて型チェックしたくスクリプトを書いたのでメモ📝

以下がそのスクリプトです。

git ls-files -- root/dir | \
grep "tsconfig.json" | sed 's/tsconfig.json//' | \
xargs -I {} sh -c "cd {}; echo \"\n\"; pwd; npm install; npm run tsc --noEmit"

git ls-files -- root/dirで特定ディレクトリ配下のGit管理下のファイルリストを出力し、 grep "tsconfig.json" | sed 's/tsconfig.json//'tsconfig.jsonが配置されているディレクトリリストを取得します。

その後、xargs -I {} sh -c "cd {}; echo \"\n\"; pwd; npm install; npm run tsc --noEmit"でそれぞれのディレクトリに移動し、npm install後にtscで型チェックします。 ※上述のスクリプトでは対象が分かりやすいようにpwdで現在のディレクトリも表示しています。

ちなみにxargsで実行された複数のスクリプトの一部が失敗した場合、exit codeは123になるようです。 GitHub Actionsはexit codeが0以外は失敗扱いになるから、xargsで成功と失敗が混在した場合には失敗になるので便利ですね!

docs.github.com

参考

yujiorama.hatenablog.com

git-scm.com