watchモードしかないスクリプトにワンショットモードを追加してAIエージェント対応する
コード生成系のスクリプトがwatchモードのみで提供されていると、AIエージェントが実行したときにプロセスが終了せず詰まる。
対応:
- 既存スクリプトに
--watchフラグを追加し、デフォルトをワンショット(1回実行して終了)に変更 package.jsonでdev用には:watchサフィックス付きスクリプトを用意
{
"scripts": {
"generate": "ts-node scripts/generate.ts",
"generate:watch": "ts-node scripts/generate.ts --watch",
"build-types": "ts-node scripts/buildTypes.ts",
"build-types:watch": "ts-node scripts/buildTypes.ts --watch",
"dev": "run-p generate:watch build-types:watch"
}
}
ポイント:
- デフォルトをワンショットにすることで、AIエージェントもCIも
--watch=falseを知らなくても使える - 人間の開発体験は
devコマンド経由でwatch版が動くので変わらない - graphql-codegenのように設定ファイル側で
watch: trueがデフォルトのツールもあるので、そちらも同じパターンでワンショット版を分離するとよい