logo hsb.horse
← Retour au blog

Blog

Réécrire generate-project-summary.py avec Bun + TypeScript

Réimplémentation en Bun + TypeScript d'un script Python de résumé de projet. Retour sur la création d'un binaire portable pour faire lire un dépôt entier à un LLM.

Publié:

J’ai réécrit en Bun + TypeScript un script Python qui résume la structure d’un projet et le contenu de ses fichiers.

Références d’origine

Déclencheur et contexte

  • Je suis peu à l’aise avec Python
  • Je voulais m’exercer à réimplémenter en JS/TS quelque chose écrit par quelqu’un d’autre dans un autre langage
  • Je suis plutôt à l’aise avec JS et TS
  • Je voulais un CLI capable de rassembler le contenu d’un dépôt dans un seul fichier pour un LLM
  • Je voulais le distribuer comme binaire portable exécutable sur plusieurs plateformes

Code source

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

Stack technique

LangageTypeScript
GestionnaireBun
Runtime JSBun
Linter/FormatterBiome
ÉditeurVS Code

Point de blocage / sujet non résolu

J’ai eu du mal à obtenir le comportement voulu avec l’API Glob intégrée à Bun, et j’ai finalement utilisé minimatch.

Points clés de l’implémentation

  1. Single File Executable : utiliser l’option --compile de Bun pour générer un binaire exécutable
  2. Gestion des glob : filtrer les fichiers avec minimatch
  3. Sortie pour LLM : regrouper la structure du projet et le contenu des fichiers dans un seul fichier markdown

Résumé

Cette réimplémentation du script Python m’a permis d’approfondir mes connaissances en TypeScript et en Bun.

Comme l’outil peut être distribué sous forme de binaire exécutable, Node.js n’a pas besoin d’être installé, ce qui facilite l’usage sur plusieurs plateformes.

Si vous voulez faire lire tout un dépôt à un LLM, cet outil permet de générer facilement le contexte nécessaire.