npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

codetovecto

v2.0.9

Published

Scan your project and generate a vectorial knowledge base for AI chatbot

Readme

codetovecto

Transforme ton projet en base de connaissances vectorielle locale — prête pour un chatbot IA.

codetovecto scanne ton code source, le découpe intelligemment via AST, génère des embeddings, et les stocke dans une base vectorielle embarquée (LanceDB). Aucun serveur requis. Aucune donnée envoyée ailleurs que ta clé OpenRouter.


Table des matières


Installation

npm install -g codetovecto

Ou sans installation globale :

npx codetovecto

Démarrage rapide

Étape 1 — Initialise le projet

Lance cette commande à la racine de ton projet :

npx codetovecto init

Deux fichiers sont générés automatiquement :

| Fichier | Rôle | |---|---| | codetovecto.config.js | Configuration des dossiers à scanner | | codetovecto-exemple.js | Exemple d'intégration RAG avec un LLM |


Étape 2 — Configure les dossiers

Ouvre codetovecto.config.js et indique les dossiers de ton projet :

module.exports = {
  frontend: "./src",       // dossier frontend (React, Vue, etc.)
  backend: "./server",     // dossier backend (Express, etc.)
};

Étape 3 — Ajoute ta clé API

Crée un fichier .env à la racine de ton projet :

OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxx

Ta clé API est fournie gratuitement par OpenRouter. Les embeddings utilisent le modèle nvidia/llama-nemotron-embed-vl-1b-v2:free — gratuit.


Étape 4 — Lance le scan

# Scanner uniquement le frontend
npx codetovecto scan --frontend

# Scanner uniquement le backend
npx codetovecto scan --backend

# Scanner les deux
npx codetovecto scan --fullstack

Configuration

Voici toutes les options disponibles dans codetovecto.config.js :

module.exports = {
  frontend: "./src",      // chemin vers ton dossier frontend
  backend: "./server",    // chemin vers ton dossier backend
  
  // Options de filtrage de taille de chunk
  minLines: 5,            // Nombre de lignes minimales pour conserver un chunk (défaut : 5)
  minCharacters: 120,     // Nombre de caractères minimaux pour conserver un chunk (défaut : 120)
};

Les options avancées (chemin d'export, limite de tokens, provider) se configurent via les flags CLI.


Commandes

codetovecto init

Initialise le projet en générant les fichiers de démarrage.

npx codetovecto init

codetovecto scan

Lance le scan, le parsing AST, la génération des embeddings et l'export.

npx codetovecto scan [options]

| Option | Description | Défaut | |---|---|---| | --frontend | Scanner le dossier frontend | — | | --backend | Scanner le dossier backend | — | | --fullstack | Scanner frontend + backend | ✅ par défaut | | --output <path> | Chemin du fichier JSON exporté | codetovecto-output.json | | --lancedb <path> | Chemin de la base LanceDB | codetovecto-lancedb/ |

Exemples :

npx codetovecto scan --frontend
npx codetovecto scan --fullstack --output ./data/knowledge.json

Ce que ça génère

codetovecto-output.json

Un fichier JSON contenant tous les chunks vectorisés de ton projet :

[
  {
    "name": "useAuth",
    "type": "arrow-function",
    "file": "useAuth.js",
    "path": "/src/hooks/useAuth.js",
    "code": "const useAuth = () => { ... }",
    "embedding": [0.021, -0.043, 0.091, "..."]
  }
]

Ce fichier est portable — tu peux le versionner ou le partager.


codetovecto-lancedb/

Une base vectorielle locale embarquée générée par LanceDB.

codetovecto-lancedb/
└── chunks.lance/
    ├── data/
    ├── _transactions/
    └── _versions/
  • Aucun serveur requis — tout tourne en local
  • Recherche en millisecondes — même sur de grandes codebases
  • Persistant — le dossier se recharge à chaque appel

Utilisation dans ton projet

Recherche vectorielle

const search = require("codetovecto/search");

const resultat = await search("comment fonctionne le login ?");

console.log(resultat.question); // "comment fonctionne le login ?"
console.log(resultat.context);  // tableau des chunks les plus proches

Structure du résultat

{
  question: "comment fonctionne le login ?",
  context: [
    {
      name: "handleLogin",
      type: "arrow-function",
      file: "auth.js",
      path: "/src/services/auth.js",
      code: "const handleLogin = async (email, password) => { ... }"
    },
    // ...4 autres chunks proches
  ]
}

Options disponibles

const resultat = await search("ta question", {
  dbPath: "./codetovecto-lancedb",  // chemin de la base (défaut)
  limit: 5,                          // nombre de chunks retournés (défaut: 5)
});

Intégration avec un LLM

Consulte le fichier codetovecto-exemple.js généré par init pour un exemple complet d'intégration avec OpenRouter, OpenAI, ou tout autre LLM.

// codetovecto-exemple.js (simplifié)
const search = require("codetovecto/search");

const resultat = await search("comment fonctionne le scanner ?");

const contexte = resultat.context
  .map(c => `// ${c.file}\n${c.code}`)
  .join("\n\n");

// Injecte `contexte` dans le prompt de ton LLM

Comment ça marche

[!TIP] Système de Cache Intelligent : Un fichier .codetovecto-cache.json est généré localement. Il enregistre le hash MD5 de chaque fichier scanné avec ses chunks et embeddings. Lors des scans futurs, seuls les fichiers modifiés ou nouveaux interrogent l'API d'OpenRouter, rendant l'exécution instantanée (moins de 3 secondes pour les fichiers inchangés).

npx codetovecto scan
         ↓
  Scan des fichiers
  (filtre node_modules, dist, .env...)
         ↓
  Vérification du cache MD5
         ↓
  Lecture du contenu brut (si changé)
         ↓
  Parsing AST
  (Babel parser — JS, JSX, TS, TSX)
  (node-html-parser — HTML)
         ↓
  Chunking intelligent
  fonction par fonction,
  composant par composant
         ↓
  Génération des embeddings
  via OpenRouter (uniquement pour les nouveaux chunks)
         ↓
  Export JSON + LanceDB local
         ↓
  search("ta question")
  → vecteur → similarité cosinus
  → chunks les plus proches
  → contexte prêt pour ton LLM

Fichiers supportés

| Extension | Type | Support | |---|---|---| | .js | JavaScript | ✅ | | .jsx | React | ✅ | | .ts | TypeScript | ✅ | | .tsx | React + TypeScript | ✅ | | .html | HTML | ✅ | | .php | PHP | 🔜 prochaine version | | .py | Python | 🔜 prochaine version |


Fichiers ignorés

codetovecto ignore automatiquement ces dossiers et fichiers :

Dossiers : node_modules, dist, .git, build, .next

Fichiers : package-lock.json, .env, .env.example, .gitignore, ainsi que tous les fichiers correspondant aux motifs globaux *.json, *.xml et *.txt.


Author

Octave Précieux Mahunan BAHOUN HOUTOUKPE

  • GitHub: https://github.com/octavebahoun
  • LinkedIn: https://www.linkedin.com/in/octave-précieux-mahunan-bahoun-houtoukpe-b9114b337/

Support

For bugs, feature requests or collaboration: https://github.com/octavebahoun/Code-to-vector/issues


Licence

MIT