resolveRepoRoot
expérimentaldepuis 0.1.0@legba-core/mcp-docs
resolveRepoRoot
Ce que ça fait
Retrouve la racine du monorepo legba-core en remontant les dossiers parents depuis startDir jusqu’à trouver pnpm-workspace.yaml.
Signature
function resolveRepoRoot(startDir: string): string
Paramètres
| Nom | Type | Requis | Défaut | Description |
|---|---|---|---|---|
startDir | string | oui | — | Dossier de départ, typiquement celui du fichier en cours d’exécution (import.meta.url) |
Retour
Le chemin absolu de la racine du monorepo (le dossier contenant pnpm-workspace.yaml).
Erreurs
| Code | Quand | Comment corriger |
|---|---|---|
| (exception générique) | Aucun pnpm-workspace.yaml trouvé en remontant depuis startDir | N’appeler cette fonction que depuis un fichier situé à l’intérieur du monorepo legba-core |
Exemple minimal
import { resolveRepoRoot } from "@legba-core/mcp-docs";
const root = resolveRepoRoot(process.cwd());
Exemple complet
import { dirname } from "node:path";
import { fileURLToPath } from "node:url";
import { resolveRepoRoot } from "@legba-core/mcp-docs";
const here = dirname(fileURLToPath(import.meta.url));
try {
const root = resolveRepoRoot(here);
console.log(`Racine du monorepo : ${root}`);
} catch (error) {
// Ce fichier tourne hors du monorepo legba-core (ex. copié ailleurs).
console.error(error);
}
Pièges
- Ne fonctionne que depuis l’intérieur du monorepo
legba-core(ou d’un de ses builds) : appelée depuis un autre projet, elle lève toujours. - Remonte jusqu’à 12 niveaux de dossiers avant d’abandonner — largement suffisant pour
packages/<paquet>/srcoudist, mais pas conçue pour un projet imbriqué plus profondément. - Rend la racine du monorepo, pas
docs/— utiliserresolveDocsRootpour obtenir directement le dossier de documentation.