@funeste38/rome
v1.5.4
Published
Tous les chemins mènent à Rome — CLI avancée pour monorepos avec gestion des processus détachés, auto-workspaces et compatibilité cross-platform.
Maintainers
Readme
@funeste38/rome
Tous les chemins mènent à Rome — CLI pour monorepos + utilitaires TypeScript
Un outil CLI moderne pour gérer les monorepos avec exécution parallèle, auto-détection des workspaces, et compatibilité cross-platform (Windows PowerShell inclus).
🚀 Fonctionnalités
✅ Gestion des processus : --detach, processes, logs séparés, redémarrage auto
✅ Configuration avancée : rome.json avec section processes personnalisable
✅ Cockpit intelligent : Lancement automatique selon configuration
✅ Robustesse maximale : Processus isolés, gestion des signaux, monitoring continu
🔐 Gestion des environnements (optionnel)
Rome peut s'intégrer à envapt pour charger des profils d'environnement et utiliser @funeste38/envapt-nezlephant pour gérer des secrets encodés en images PNG. Cette intégration est optionnelle : Rome reste pleinement fonctionnel sans ces paquets.
Installation (optionnelle) :
npm i envapt @funeste38/envapt-nezlephant --save-devUsage (exemples) :
- Vérifier un profil :
rome env check --profile dev- Générer un
.envpour un target (web/server) :
rome env generate web --profile production --out apps/web/.env.production- Chiffrer/déchiffrer des secrets avec Nezlephant :
rome env encrypt apps/server/.env.production --out secrets/a11.png
rome env decrypt secrets/a11.png --out apps/server/.env.productionNotes :
- Les dépendances
envaptet@funeste38/envapt-nezlephantsont chargées dynamiquement par Rome ; les projets qui n'utilisent pasrome envne sont pas impactés. - Documentez vos profils dans
envapt.config.(ts|json)si vous souhaitez querome env initgénère une configuration par défaut.
📦 Installation
npm i @funeste38/rome@latest
# ou
pnpm add @funeste38/rome@latest
yarn add @funeste38/rome@latest🖥️ CLI - Commandes principales
Rome fournit un CLI pour gérer vos workspaces en développement.
Exécution simple
# Auto-cd vers un workspace + exécuter une commande
rome run server -- npm run dev
rome run web -- npm run dev
# Lancement automatique selon le nombre de workspaces détectés
rome start # 1 workspace → run, 2 → duo, 3 → trioExécution parallèle
# 2 services en parallèle avec logs préfixés
rome duo server "npm run dev" web "npm run dev"
# 3 services en parallèle
rome trio server "npm run dev" web "npm run dev" ai "npm run start"Auto-détection des workspaces
Le CLI détecte automatiquement ces dossiers :
- Racine :
server,backend,api,web,front,client,app - Sous-dossiers :
apps/,packages/,services/,src/ - Récursif : recherche dans tous les sous-dossiers courants
Nettoyage des node_modules
# Nettoyer un workspace spécifique
rome clean front
# Nettoyer tous les workspaces
rome cleanInstallation automatique des dépendances
Si npm run dev échoue, Rome tente automatiquement :
- ✅ Détection de l'échec
- 🔄 Installation des dépendances avec
npm install - 🔄 Redémarrage de la commande
FixPath - Auto-cd intelligent
# Se positionne automatiquement dans le workspace
rome fix server -- npm run dev
rome fix web -- npm run buildGestion des workspaces
# Build tous les workspaces
rome build
# Build un workspace spécifique
rome build front
# Test tous les workspaces
rome test
# Lint tous les workspaces
rome lintGestion des tunnels
# Démarrer un tunnel ngrok
rome tunnel up 3000
# Arrêter le tunnel
rome tunnel down
# Vérifier le statut du tunnel
rome tunnel status
# Tester la connectivité du tunnel
rome tunnel test
# Lancer un terminal split pour monitoring
rome tunnel split
# Lanceur automatique (serveur + tunnel + monitoring)
rome tunnel autoDéploiement Cloud
# Déploiement Netlify (avec build automatique)
rome deploy build
# Déploiement Netlify (build existant)
rome deploy
# Gestion des tunnels Cloudflare
rome cf up [port] # Tunnel nommé (stable)
rome cf up --detach # Tunnel nommé en arrière-plan
rome cf quick [port] # Tunnel rapide (éphémère)
rome cf quick --detach # Tunnel rapide en arrière-plan
rome cf down # Arrêter tous les tunnelsCockpit de développement
# Lancer tous les services en parallèle (multi-panels)
rome cockpit
# Lance automatiquement :
# - Serveur backend (apps/server)
# - Ollama (si disponible)
# - Tunnel Cloudflare
# - Frontend (apps/web)Gestion des processus détachés
Rome supporte maintenant l'exécution de processus en arrière-plan pour éviter les interruptions.
Mode détaché
# Lancer des processus en arrière-plan
rome duo server "npm run dev" web "npm run dev" --detach
rome trio server "npm run dev" web "npm run dev" ai "npm run start" --detach
rome start --detach
# Les processus continuent même si le terminal est fermé
# Retour immédiat au prompt avec confirmationGestion des processus actifs
# Lister tous les processus Rome actifs
rome processes
rome processes list
# Arrêter tous les processus Rome
rome processes stopConfiguration personnalisée des processus
Le fichier rome.json supporte maintenant une section processes pour définir des services personnalisés :
{
"processes": {
"server": {
"command": "npm run dev",
"cwd": "apps/server",
"detach": true,
"restart": "always",
"env": { "NODE_ENV": "development" }
},
"web": {
"command": "npm run dev",
"cwd": "apps/web",
"detach": true,
"restart": "on-failure"
},
"tunnel": {
"command": "cloudflared tunnel --url http://127.0.0.1:3000",
"detach": true,
"restart": "on-failure"
},
"ollama": {
"command": "ollama serve",
"detach": true,
"restart": "on-failure"
}
}
}Propriétés des processus :
command: Commande à exécuter (obligatoire)cwd: Répertoire de travail (optionnel)detach: Mode détaché (optionnel, défaut: true)restart: Politique de redémarrage (always/on-failure/désactivé)env: Variables d'environnement (optionnel)
Logs séparés et monitoring
# Chaque processus écrit dans son propre fichier log
# Logs disponibles dans le dossier ./logs/
# - server.log
# - web.log
# - tunnel.log
# - ollama.log
# Redémarrage automatique selon la configuration
# Surveillance continue des processusConfiguration personnalisée
# Créer un fichier de configuration
rome init
# Le fichier rome.json permet de personnaliser :
# - Patterns de détection des workspaces
# - Gestionnaire de paquets (npm/yarn/pnpm/auto)
# - Scripts personnalisésSauvegarde et restauration
# Sauvegarder la configuration actuelle
rome backup
# Restaurer la dernière sauvegarde
rome restore
# Restaurer une sauvegarde spécifique
rome restore rome.json.backup.2025-11-07T20-52-33Système de sauvegarde automatique :
rome initsauvegarde automatiquement avant de régénérerrome restoresauvegarde la config actuelle avant de restaurer- Fichiers nommés avec timestamp pour traçabilité
🏛️ Système Militaire - Indexation Romaine
Rome transforme vos repositories en armée romaine avec une classification automatique des fichiers et dossiers.
Hiérarchie Militaire
Chaque élément de votre projet reçoit un rôle militaire :
- 👨✈️ Capitaine = Dossier (workspace, src/, components/, etc.)
- 🏹 Archer = Documentation (.md, .txt, README, etc.)
- 🏗️ Catapulte = Scripts/Build (package.json, Dockerfile, scripts)
- ⚔️ Infanterie = Code source (.ts, .js, .py, .java, etc.)
- 🐎 Cavalerie = Tests (test/, spec/, *.test.js, etc.)
- 👑 Centurion = Configuration (tsconfig.json, eslint.config.js, etc.)
- 🦅 Aquila = Étendards (package.json principal, rome.json)
- 🔫 Balliste = Assets/Données (.json, .yaml, .csv, images)
Formations Automatiques
Rome classe automatiquement vos repositories selon leur taille et complexité :
- 🏰 Bataillon : Petit projet (< 10 unités, ≤ 2 catapultes, ≤ 5 infanterie)
- ⚔️ Légion : Projet moyen (< 50 unités, ≤ 5 capitaines)
- 🏛️ Armée : Grand projet (≥ 50 unités, nombreux capitaines)
Inspection des Troupes
# Voir l'armée complète avec toutes les formations
rome army
# Exemple de sortie :
🏛️ ARMÉE ROMAINE - Formations Détectées
═══════════════════════════════════════
⚔️ Légion "mon-projet" (Force: 45)
📍 /path/to/mon-projet
🦅 1 Aigles
👑 3 Centurions
🏗️ 5 Catapultes
⚔️ 25 Infanterie
🐎 8 Cavalerie
👨✈️ 3 Capitaines🏗️ Setup Repository - Scripts PowerShell
Rome inclut des scripts PowerShell pour initialiser rapidement vos repositories.
Monorepo (recommandé)
# Depuis votre dossier projet
.\scripts\repo-reshape.ps1 -Mode mono
# Crée la structure :
# ├── apps/
# │ ├── web/ (Vite + React)
# │ └── server/ (Express)
# ├── package.json (workspaces)
# ├── tsconfig.base.json
# └── netlify.tomlSplit repos (2 dépôts séparés)
.\scripts\repo-reshape.ps1 -Mode split
# Crée la structure :
# ├── repos/
# │ ├── web/ (Vite + React + netlify.toml)
# │ └── server/ (Express)Configuration
# Paramètres optionnels
.\scripts\repo-reshape.ps1 -Mode mono -Root "C:\MonProjet"🌐 Déploiement et Intégration Cloud
Rome supporte le déploiement moderne avec mock API et tunnels sécurisés.
🔌 API Mock + Fallback Upstream (Netlify Function)
Créez netlify/functions/a11-chat.js pour une API ChatGPT-compatible avec fallback :
// Netlify Function: mock + fallback upstream (Cloudflare tunnel / API publique)
const UPSTREAM = process.env.UPSTREAM_URL || ""; // ex: https://api.funesterie.pro
const DEFAULT_MODEL = process.env.DEFAULT_MODEL || "llama3.1:8b-instruct";
exports.handler = async (event) => {
const headers = {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
};
const body = event.body ? JSON.parse(event.body) : {};
const model = body.model || DEFAULT_MODEL;
// 1) Forward vers upstream si disponible
if (UPSTREAM) {
try {
const r = await fetch(`${UPSTREAM}/v1/chat/completions`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ ...body, model }),
signal: AbortSignal.timeout(8000),
});
const text = await r.text();
return { statusCode: r.status, headers, body: text };
} catch (_) {
/* fallback mock */
}
}
// 2) Mock (toujours dispo)
const msg = body?.messages?.[0]?.content || "";
return {
statusCode: 200,
headers,
body: JSON.stringify({
id: "chatcmpl-mock",
object: "chat.completion",
created: Math.floor(Date.now() / 1000),
model,
choices: [
{
index: 0,
message: {
role: "assistant",
content: `(MODE DEV) Mock. Tu as dit: "${msg}"`,
},
finish_reason: "stop",
},
],
}),
};
};Configuration Netlify :
[build]
command = "npm --prefix apps/web run build"
publish = "apps/web/dist"
functions = "netlify/functions"
[[redirects]]
from = "/api/*"
to = "/.netlify/functions/a11-chat/:splat"
status = 200
force = trueVariables d'environnement Netlify :
DEFAULT_MODEL=llama3.1:8b-instruct
UPSTREAM_URL=https://api.funesterie.pro # ou https://xxxxx.trycloudflare.com🌩️ Cloudflare Tunnel — 2 modes
A) Tunnel nommé (URL stable, recommandé)
winget install Cloudflare.cloudflared
cloudflared tunnel login
cloudflared tunnel create a11-localConfig locale (~/.cloudflared/config.yml) :
tunnel: a11-local
credentials-file: ~/.cloudflared/a11-local.json
ingress:
- hostname: api.funesterie.pro
service: http://127.0.0.1:3000
- service: http_status:404# DNS (si zone chez Cloudflare)
cloudflared tunnel route dns a11-local api.funesterie.pro
# Run
cloudflared tunnel run a11-localB) Quick tunnel (URL éphémère)
cloudflared tunnel --url http://127.0.0.1:3000
# Copiez l'URL générée pour UPSTREAM_URL🧪 Profils d'environnement (front)
Développement (apps/web/.env.local) :
VITE_API_BASE=http://127.0.0.1:3000
VITE_MODEL=llama3.1:8b-instructProduction (apps/web/.env.production) :
---
## 🛠️ Scripts NPM étendus
Ajoutez ces scripts dans votre `package.json` racine pour une expérience de développement complète :
```json
{
"scripts": {
"web:build": "npm --prefix apps/web run build",
"web:dev": "npm --prefix apps/web run dev",
"deploy": "npx netlify deploy --prod --dir=apps/web/dist --functions=netlify/functions",
"deploy:build": "npm run web:build && npm run deploy",
"start:a11": "node apps/server/server.cjs",
"tunnel": "cloudflared tunnel --url http://127.0.0.1:3000",
"rome:start": "rome start"
}
}⚡ "Cockpit Rome" (multi-panels)
Script PowerShell pour lancer tous les services en parallèle :
# scripts/rome-cockpit.ps1
Start-Process powershell -ArgumentList 'cd apps/server; npm run dev'
Start-Process powershell -ArgumentList 'ollama serve'
Start-Process powershell -ArgumentList 'cloudflared tunnel --url http://127.0.0.1:3000'
Start-Process powershell -ArgumentList 'npm --prefix apps/web run dev'✅ Check-list "ça marche en prod"
# 1. Lier le site Netlify
npx netlify link --name votre-site
# 2. Build et déploiement
npm run web:build
npm run deploy
# 3. Tests
curl https://votre-site.netlify.app/.netlify/functions/a11-chat
# → JSON OK
# POST vers https://votre-site.netlify.app/api/v1/chat/completions
# → Tunnel UP: vraie réponse IA
# → Tunnel OFF: mock propre (pas d'erreur)� API TypeScript
fixPath - Résolution de chemins ESM
import { fixPath } from "@funeste38/rome/fixPath";
// Auto-détection du workspace + commande optionnelle
await fixPath("server", "npm run dev");
await fixPath(); // auto-cd seulementCommandes programmatiques
import { run, duo, trio } from "@funeste38/rome";
// Exécution simple
await run("server", ["npm", "run", "dev"]);
// Exécution parallèle
await duo("server", ["npm", "run", "dev"], "web", ["npm", "run", "dev"]);
await trio(
"server",
["npm", "run", "dev"],
"web",
["npm", "run", "dev"],
"ai",
["npm", "run", "start"]
);⚙️ Développement & Build
Build du package
npm run build # TypeScript → dist/Structure de build
dist/
├── index.js + .d.ts # Exports principaux
├── cli.js + .d.ts # Point d'entrée CLI
├── fixPath.js + .d.ts # Utilitaire chemins
├── run.js + .d.ts # Exécution simple
├── duo.js + .d.ts # Exécution duo
├── trio.js + .d.ts # Exécution trio
├── tunnel.js + .d.ts # Gestion des tunnels
└── utils.js + .d.ts # Utilitaires internesRelease & Publication
# Version automatique + publication
npm run release
# Ou manuellement :
npm version patch # ou minor/major
npm publish --access public🧾 Changelog
v1.5.3
- ✅ Correction critique mode détaché : Suppression des
awaitbloquants danslaunchDetachedProcess - ✅ Détachement complet : Ajout de
child.unref()pour détacher complètement du processus parent - ✅ Retour immédiat : Les commandes
--detachreviennent maintenant instantanément au prompt - ✅ Processus vraiment indépendants : Les processus détachés survivent à la fermeture du terminal parent
- ✅ Cross-platform robuste : Comportement identique sur Windows, Linux et macOS
v1.5.2
- ✅ Correction mode détaché duo/trio :
rome duo --detachetrome trio --detachlancent maintenant vraiment les processus en arrière-plan - ✅ Processus réellement détachés : Utilisation de
detached: trueet redirection des logs séparés - ✅ Logs individuels : Chaque processus détaché écrit dans
./logs/{workspace}-{label}.log - ✅ Terminal libéré : Plus besoin de Ctrl+C, retour immédiat au prompt
- ✅ Cohérence cross-commandes : Même comportement détaché pour toutes les commandes multi-workspaces
v1.5.1
- ✅ Cloudflare tunnels détachés : Support
--detachpourrome cf upetrome cf quick - ✅ Correction parsing arguments : Utilisation de
filteredArgspour éviter les conflits avec--detach - ✅ Logs séparés pour tunnels :
cloudflare-tunnel.logetcloudflare-quick.log - ✅ Amélioration documentation : README mis à jour avec les options
--detachpour Cloudflare
v1.5.0
- ✅ Gestion des processus détachés : Option
--detachpour exécution en arrière-plan - ✅ Commande
processes:rome processes listetrome processes stop - ✅ Configuration
rome.json: Sectionprocessespour définir des services personnalisés - ✅ Logs séparés : Chaque processus écrit dans
./logs/{nom}.log - ✅ Redémarrage automatique : Politiques
always/on-failureconfigurables - ✅ Cockpit amélioré : Utilise la configuration
rome.jsonpour les processus - ✅ Robustesse accrue : Gestion des signaux et isolation des processus
- ✅ Cross-platform : Support Windows PowerShell et Unix pour la gestion des processus
v1.4.0
- ✅ Version mineure : Nouvelles fonctionnalités de déploiement cloud
- ✅ Commandes CLI cloud :
rome deploy,rome cockpit,rome cf(Cloudflare) - ✅ Déploiement Netlify intégré : Build + déploiement en une commande
- ✅ Cockpit multi-panels : Lancement automatique de tous les services de dev
- ✅ Gestion Cloudflare : Tunnels nommés stables et tunnels rapides éphémères
- ✅ Fichiers de déploiement : Netlify Functions, configs, environnements prêts
v1.3.9
- ✅ Publication patch : Corrections de templates et scripts générés
- ✅ Templates server.js : Utilisation propre de
const PORT = process.env.PORT || 3000pour éviter les duplications - ✅ Scripts générés : Tous les projets créés par
repo-reshape.ps1incluent maintenanttestetlintscripts - ✅ Robustesse CLI :
npx rome build/test/lintfonctionne sur tous les workspaces générés - ✅ Déploiement cloud : Intégration Netlify Functions + Cloudflare Tunnel
- ✅ API Mock + Fallback : Function Netlify avec mock local et upstream forwarding
- ✅ Scripts étendus : Commandes deploy, tunnel, cockpit ajoutées
- ✅ Profils environnement : .env.local/.env.production pour le frontend
- ✅ Cockpit multi-panels : Script PowerShell pour développement intégré
- ✅ Commandes CLI cloud :
rome deploy,rome cockpit,rome cf(Cloudflare)
v1.3.8
- ✅ Publication stable : Version 1.3.8 avec toutes les corrections et améliorations
- ✅ Workspaces complets : Tous les workspaces de test ont maintenant les scripts requis
- ✅ Fonctionnalités tunnel : Système de tunnels ngrok entièrement opérationnel
- ✅ Documentation à jour : README complet avec toutes les nouvelles fonctionnalités
- ✅ Templates corrigés : Server.js templates utilisent maintenant
const PORT = process.env.PORT || 3000pour éviter les duplications - ✅ Scripts générés : Les projets générés par
repo-reshape.ps1incluent maintenanttestetlintscripts dans tous les package.json
v1.3.7
- ✅ 🌐 Système de tunnels intégré : Gestion complète des tunnels ngrok
- ✅ Commandes tunnel :
rome tunnel up/down/status/test/split/auto - ✅ Tests de connectivité : Vérification automatique des endpoints (/health, /status, /api/*)
- ✅ Terminaux split : Monitoring multi-onglets avec PowerShell
- ✅ Lanceur automatique : Démarrage serveur + tunnel + monitoring intégré
- ✅ Timeout géré : AbortController pour les requêtes HTTP fiables
- ✅ Corrections ESM : Imports ES6 complets, plus de require()
- ✅ Fix workspaces : Scripts build/test/lint ajoutés aux workspaces de test
v1.3.5
- ✅ Corrections ESM : Fix "require is not defined" dans cleanNodeModules
- ✅ Déduplication renforcée : Élimination complète des doublons (backend vs apps/backend)
- ✅ Pré-install séquentielle : Nouvelle fonction preInstallAllDeps() pour stabilité
- ✅ Import spawnSync : Utilisation des imports ESM au lieu de require()
v1.3.4
- ✅ Déduplication des workspaces : Utilisation de
realpathpour éviter les doublons - ✅ Normalisation des chemins : Affichage relatif (
.) au lieu des chemins absolus - ✅ Amélioration robustesse : Gestion des liens symboliques et chemins normalisés
- ✅ Affichage optimisé : Chemins plus lisibles dans
rome army
v1.3.3
- ✅ 🏛️ Système Militaire : Indexation automatique avec métaphore romaine
- ✅ Classification automatique : Capitaine/Archer/Catapulte/Infanterie/Cavalerie/Centurion/Aquila/Balliste
- ✅ Formations intelligentes : Bataillon/Légion/Armée selon la taille du projet
- ✅ Commande
rome army: Inspection visuelle des troupes avec comptage des unités - ✅ Analyse récursive : Scan automatique de la structure des fichiers
- ✅ Métaphore hyper-pratique : Navigation intuitive des repositories
v1.3.1
- ✅ Système de sauvegarde :
rome backupetrome restore - ✅ Sauvegarde automatique lors de
rome initetrome restore - ✅ Gestion des versions de config avec timestamps
- ✅ Sécurité renforcée pour les modifications de configuration
v1.3.0
- ✅ Nouvelles commandes :
rome build,rome test,rome lintpour tous les workspaces - ✅ Configuration personnalisable :
rome initcrée un fichierrome.json - ✅ Multi-gestionnaires : détection automatique npm/yarn/pnpm
- ✅ Configuration avancée : patterns personnalisés, scripts custom, exclusions
v1.2.11
- ✅ Amélioration détection workspaces (services/, src/, récursif)
- ✅ Commande
rome cleanpour node_modules verrouillés - ✅ Installation automatique des dépendances en cas d'échec
- ✅ Meilleur logging et feedback utilisateur
- ✅ Compatibilité Windows améliorée
v1.2.9
- ✅ Fix PowerShell syntax errors dans repo-reshape.ps1
- ✅ Amélioration compatibilité Windows
v1.2.6 - v1.2.8
- ✅ Ajout commandes
run/start/triopour gestion monorepos - ✅ Auto-détection workspaces depuis package.json
- ✅ Compatibilité Windows PowerShell avec NODE_OPTIONS
- ✅ CLI zero dépendances, pur Node.js
v1.2.4
- ✅ Mode
duopour développement front/back parallèle - ✅ CLI cross-platform avec auto-cd et exécution commandes
- ✅ Zero dépendances runtime
v1.1.0 - v1.2.3
- ✅ Séparation builds client/server
- ✅ Version client browser-safe
- ✅ Helper
url()pour génération routes - ✅ Typings TypeScript complets
- ✅ Fallback "browser" field
🤝 Contribution
Issues et PRs bienvenues sur GitHub !
Développement local
git clone https://github.com/jEFFLEZ/rome.git
cd rome
npm install
npm run build
npm link # pour tester localement📄 License
MIT © 2025 — jEFFLEZ
Tous les chemins mènent à Rome — CLI moderne pour vos monorepos
