Pythonで書かれたプロジェクト構造とファイル内容を要約するスクリプトを、Bun+TypeScriptで再実装した。
元ネタ
きっかけ・経緯
- Pythonが苦手
- 他人が別言語で書いたものをJS/TSで再実装するお勉強
- JS、TSはそこそこ
- リポジトリの内容をLLM用に一つのファイルにまとめるCLIが欲しかった
- ポータブルな実行可能バイナリにしてプラットフォーム問わず実行できるようにしたかった
ソースコード
技術構成
| 開発言語 | TypeScript |
| パッケージ管理 | Bun |
| JSランタイム | Bun |
| Linter/Formatter | Biome |
| Editor | VS Code |
つまづいたポイント・未解決事項
Bunに標準搭載されているGlob APIを使った判定で意図した挙動を実現することに苦戦して、minimatchに逃げた。
実装のポイント
- Single File Executable: Bunの
--compileオプションで実行可能バイナリを生成 - Glob処理: minimatchでファイルフィルタリング
- LLM向け出力: プロジェクト構造とファイル内容を1つのmarkdownファイルに集約
まとめ
Pythonスクリプトの再実装を通じて、TypeScriptとBunの知識を深めることができた。
実行可能バイナリとして配布できるため、Node.jsのインストールが不要で、プラットフォーム間での利用が容易になった。
LLMにリポジトリ全体を読ませたいときに、このツールを使えば簡単にコンテキストを生成できる。
hsb.horse