logo hsb.horse
← ブログ一覧に戻る

ブログ

generate-project-summary.pyをBun+TypeScriptで再実装した話

Pythonで書かれたプロジェクト構造要約スクリプトを、Bun+TypeScriptで再実装。LLMにリポジトリ全体を読ませるための実行可能バイナリ作成の経緯と実装を紹介。

公開日:

Pythonで書かれたプロジェクト構造とファイル内容を要約するスクリプトを、Bun+TypeScriptで再実装した。

元ネタ

きっかけ・経緯

  • Pythonが苦手
  • 他人が別言語で書いたものをJS/TSで再実装するお勉強
  • JS、TSはそこそこ
  • リポジトリの内容をLLM用に一つのファイルにまとめるCLIが欲しかった
  • ポータブルな実行可能バイナリにしてプラットフォーム問わず実行できるようにしたかった

ソースコード

mktbsh/generate-project-summary.js: Inspired by https://github.com/Olemi-llm-apprentice/generate-project-summary

技術構成

開発言語TypeScript
パッケージ管理Bun
JSランタイムBun
Linter/FormatterBiome
EditorVS Code

つまづいたポイント・未解決事項

Bunに標準搭載されているGlob APIを使った判定で意図した挙動を実現することに苦戦して、minimatchに逃げた。

実装のポイント

  1. Single File Executable: Bunの--compileオプションで実行可能バイナリを生成
  2. Glob処理: minimatchでファイルフィルタリング
  3. LLM向け出力: プロジェクト構造とファイル内容を1つのmarkdownファイルに集約

まとめ

Pythonスクリプトの再実装を通じて、TypeScriptとBunの知識を深めることができた。

実行可能バイナリとして配布できるため、Node.jsのインストールが不要で、プラットフォーム間での利用が容易になった。

LLMにリポジトリ全体を読ませたいときに、このツールを使えば簡単にコンテキストを生成できる。