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で成功と失敗が混在した場合には失敗になるので便利ですね!
参考