
Boîte à outils d'analyse et d'optimisation des dépendances pour les bases de code JavaScript et TypeScript modernes. Garantissez l'hygiène du graphe de dépendances et supprimez le code inutilisé grâce à une CLI très rapide.
Capacités • Installation • Documentation • Toolkit d'exploration • Référence CLI
Toolkit d'analyse et d'optimisation des dépendances pour les bases de code JavaScript et TypeScript modernes.
Appliquez l'hygiène du graphe de dépendances et supprimez le code inutilisé avec une CLI très rapide.
À mesure que les bases de code grandissent, maintenir une carte mentale des dépendances devient impossible. Rev-dep est un outil d'analyse statique haute vitesse conçu pour appliquer l'intégrité de l'architecture et l'hygiène des dépendances dans les projets JS/TS à grande échelle.
Considérez Rev-dep comme un linter haute vitesse pour votre graphe de dépendances.
Consolidez les contrôles fragmentés et séquentiels de plusieurs outils lents en un moteur unique et haute performance. Rev-dep exécute une suite complète de contrôles de gouvernance — circularité, orphelins, frontières de modules et plus encore — en un seul passage parallélisé. Implémenté en Go pour contourner les goulots d'étranglement de performance des analyses basées sur Node, il peut auditer un projet de plus de 500k lignes de code en environ 150ms. Voir la comparaison des performances
Rev-dep va au-delà de l'analyse passive pour appliquer activement les règles, en répondant (et en faisant échouer la CI sur) aux questions difficiles :
node_modules sont-ils inutilisés ? ».Rev-dep sert de gardien haute vitesse pour votre CI, garantissant que votre graphe de dépendances reste léger et que votre architecture demeure intacte pendant vos itérations.
Conçu pour les espaces de travail modernes (pnpm, yarn, npm). Rev-dep résout nativement les cartes exports/imports de package.json, les alias TypeScript et trace les dépendances à travers les frontières des packages.
Allez au-delà de l'analyse passive. Utilisez le moteur de configuration pour appliquer les Frontières de Modules et les Conventions d'Import. Exécutez une suite complète de contrôles d'hygiène (circularité, orphelins, modules inutilisés et plus encore) en un seul passage parallélisé qui sert de gardien haute vitesse pour votre CI.
Toolkit CLI qui aide à déboguer les problèmes de dépendances entre fichiers. Comprenez les relations transitives entre fichiers et corrigez les problèmes.
Implémenté en Go pour éliminer le coût de performance de l'analyse basée sur Node. En traitant les fichiers en parallèle, Rev-dep offre une exécution 17x à 90x plus rapide que les alternatives, réduisant considérablement les coûts de CI et les temps d'attente des développeurs.
Rev-dep peut auditer un projet de plus de 500k lignes de code en environ 150ms. Voir la comparaison des performances
Utilisez rev-dep config run pour exécuter plusieurs contrôles en un seul passage pour tous les packages.
Contrôles disponibles :
moduleBoundaries - applique les frontières d'architecture entre les modules.importConventions - applique les conventions de style d'import (propose une correction automatique).unusedExportsDetection - détecte les exports jamais utilisés (propose une correction automatique).orphanFilesDetection - détecte les fichiers morts/orphelins (propose une correction automatique).unusedNodeModulesDetection - détecte les dépendances déclarées mais non utilisées.missingNodeModulesDetection - détecte les imports manquants dans le package json.unresolvedImportsDetection - détecte les requêtes d'import non résolues.circularImportsDetection - détecte les imports circulaires.duplicatedCodeDetection - détecte le code copié-collé (blocs répétés et éléments JSX).devDepsUsageOnProdDetection - détecte les dépendances de développement utilisées dans le code de production.Utilisez les commandes CLI pour l'exploration ad hoc des dépendances :
entry-points - découvre les points d'entrée du projet.files - liste les fichiers de l'arbre de dépendances pour un point d'entrée donné.resolve - trace les chemins de dépendances entre fichiers (qui importe ce fichier).imported-by - liste les importateurs directs d'un fichier.circular - liste les chaînes de dépendances circulaires.duplicated-code - trouve les blocs de code copiés-collés et les éléments JSX.node-modules - inspecte les modules node utilisés, inutilisés, manquants et installés.lines-of-code - compte les lignes de code effectives.unresolved - liste les imports qui n'ont pas pu être résolus, groupés par fichier.Documentation complète : rev-dep.com/docs/intro
Installez localement pour configurer les scripts de vérification du projet``` yarn add -D rev-dep
Supprimer```
npm install -D rev-dep
Le contenu à traduire est vide. Veuillez fournir le texte source pour cette portion (chunk 5/205).``` pnpm add -D rev-dep
Créez un fichier de configuration pour un démarrage rapide :```
npx rev-dep config init
Installez globalement pour l'utiliser comme outil CLI :``` yarn global add rev-dep
I don't see any content to translate. The input after "INPUT:" is empty, so there is nothing to render.```
npm install -g rev-dep
Aucun contenu n'a été fourni dans cette entrée (chunk 13 vide). Merci de transmettre le texte à traduire.``` pnpm global add rev-dep
### Guides d'intégration étape par étape
Suivez le guide qui correspond à votre projet pour passer de zéro à une configuration fonctionnelle :
- [Guide d'intégration monorepo](https://rev-dep.com/docs/monorepo-integration-guide) - pour les espaces de travail `pnpm`/`yarn`/`npm`.
- [Guide d'intégration pour espace de travail unique](https://rev-dep.com/docs/single-workspace-integration-guide) - pour les projets à package unique.
## **Exemples rapides 💡**
Quelques exemples d'utilisation instantanée pour se familiariser avec l'outil :```bash
# Detect circular imports/dependencies
rev-dep circular
# Find copy-pasted code
rev-dep duplicated-code
# Detect unused node modules
rev-dep node-modules unused
# List all entry points in the project
rev-dep entry-points
# Check which files an entry point imports
rev-dep files --entry-point src/index.ts
# Find every entry point that depends on a file
rev-dep resolve --file src/utils/math.ts
# Resolve dependency path between files
rev-dep resolve --file src/utils/math.ts --entry-point src/index.ts
Rev-dep fournit un système de configuration pour orchestrer les vérifications de projet. L'approche par configuration est conçue pour la vitesse et constitue la méthode préférée pour implémenter les vérifications de projet, car elle peut exécuter toutes les vérifications en un seul passage, nettement plus rapidement que l'exécution de plusieurs commandes individuelles séparément.
Les vérifications disponibles sont :
moduleBoundaries - appliquer des frontières d'architecture entre les modules.importConventions - appliquer les conventions de style d'import (propose une correction automatique).unusedExportsDetection - détecter les exports jamais utilisés (propose une correction automatique).orphanFilesDetection - détecter les fichiers morts/orphelins (propose une correction automatique).unusedNodeModulesDetection - détecter les dépendances déclarées mais non utilisées.missingNodeModulesDetection - détecter les imports manquants dans le package json.unresolvedImportsDetection - détecter les demandes d'import non résolues.circularImportsDetection - détecter les imports circulaires.duplicatedCodeDetection - détecter les blocs de code copiés-collés et les éléments JSX.devDepsUsageOnProdDetection - détecter les dépendances de développement utilisées dans le code de production.Les vérifications sont regroupées dans des espaces de travail. Vous pouvez avoir plusieurs espaces de travail, par ex. pour chaque paquet du monorepo.
Initialisez un fichier de configuration dans votre projet :```bash
rev-dep config init
Comportement de `rev-dep config init` :
- Racine d'un monorepo : Exécuter `rev-dep config init` à la racine de l'espace de travail crée un espace de travail racine et un espace de travail pour chaque package d'espace de travail découvert.
- Package d'espace de travail d'un monorepo ou projets standards : Exécuter `rev-dep config init` dans un répertoire crée une configuration avec un seul espace de travail avec `path: "."` pour ce répertoire.
Exécute toutes les vérifications configurées (essai à blanc, aucune correction appliquée pour l'instant) :```bash
# Execute all workspaces and checks defined in the config
rev-dep config run
Listez tous les problèmes détectés :```bash
rev-dep config run --list-all-issues
Corrigez toutes les vérifications corrigeables :```bash
# Fix checks configured with autofix
rev-dep config run --fix
Le fichier de configuration (rev-dep.config.json(c) ou .rev-dep.config.json(c)) vous permet de définir plusieurs espaces de travail, chacun ciblant différentes parties de votre base de code avec des contrôles spécifiques activés.
{ "configVersion": "2.0", "$schema": "https://github.com/jayu/rev-dep/blob/master/config-schema/2.0.schema.json?raw=true", "nodeModulesResolution": { "resolutionType": "entry-package", "includeDevDepsFromRoot": false }, "workspaces": [ { "path": ".", "prodEntryPoints": ["src/main.tsx", "src/pages//*.tsx"], "devEntryPoints": ["scripts/", "**/.test."], "unusedExportsDetection": { "enabled": true, "autofix": true }, "orphanFilesDetection": { "enabled": true, "autofix": true }, "unusedNodeModulesDetection": { "enabled": true }, "circularImportsDetection": { "enabled": true }, "devDepsUsageOnProdDetection": { "enabled": true, "ignoreTypeImports": true } } ] }
#### Exemple de configuration complet
Voici un exemple complet montrant toutes les propriétés disponibles :```jsonc
{
"configVersion": "1.10",
"$schema": "https://github.com/jayu/rev-dep/blob/master/config-schema/1.10.schema.json?raw=true", // enables json autocompletion
"conditionNames": ["import", "default"],
"ignoreFiles": ["**/*.test.*"],
"nodeModulesResolution": { "resolutionType": "entry-package", "includeDevDepsFromRoot": false },
"workspaces": [
{
"path": ".",
"followMonorepoPackages": true,
"prodEntryPoints": ["src/main.tsx", "src/pages/**/*.tsx", "src/server.ts"],
"devEntryPoints": ["scripts/**", "**/*.test.*"],
"ignoreEntryPoints": ["src/legacy/oldDashboard.tsx"],
"moduleBoundaries": [
{
"name": "ui-components",
"pattern": "src/components/**/*",
"allow": ["src/utils/**/*", "src/types/**/*"],
"deny": ["src/api/**/*"]
},
{
"name": "api-layer",
"pattern": "src/api/**/*",
"allow": ["src/utils/**/*", "src/types/**/*"],
"deny": ["src/components/**/*"]
}
],
"importConventions": [
{
"rule": "relative-internal-absolute-external",
"autofix": true,
"domains": [
{
"path": "src/features/auth",
"alias": "@auth",
"enabled": true
},
{
"path": "src/shared/ui",
"alias": "@ui-kit",
"enabled": false // checks disabled for this domain, but alias is still used for absolute imports from other domains
}
]
}
],
"circularImportsDetection": {
"enabled": true,
"ignoreTypeImports": true
},
"orphanFilesDetection": {
"enabled": true,
"ignoreTypeImports": true,
"graphExclude": ["**/*.test.*", "**/stories/**/*"],
"autofix": true
},
"unusedNodeModulesDetection": {
"enabled": true,
"includeModules": ["@myorg/**"],
"excludeModules": ["@types/**"],
"pkgJsonFieldsWithBinaries": ["scripts", "bin"],
"filesWithBinaries": ["scripts/check-something.sh"],
"filesWithModules": [".storybook/main.ts"],
"outputType": "groupByModule"
},
"missingNodeModulesDetection": {
"enabled": true,
"includeModules": ["lodash", "axios"],
"excludeModules": ["@types/**"],
"outputType": "groupByFile"
},
"unusedExportsDetection": {
"enabled": true,
"autofix": true,
"ignoreTypeExports": true,
"graphExclude": ["**/*.stories.tsx"],
"ignore": {
"src/types.ts": "B*",
"**/generated/**/*.ts": "*"
},
"ignoreFiles": ["**/*.generated.ts"],
"ignoreExports": ["default", "unused*"],
},
"unresolvedImportsDetection": {
"enabled": true,
"ignore": {
"src/index.ts": "legacy-*"
},
"ignoreFiles": ["**/*.generated.ts"],
"ignoreImports": ["@internal/*"]
},
"devDepsUsageOnProdDetection": {
"enabled": true,
"ignoreTypeImports": true
},
"restrictedImportsDetection": {
"enabled": true,
"entryPoints": ["src/server.ts", "src/server/**/*.ts"],
"graphExclude": ["some-file-coupling-other-files.ts"],
"denyFiles": ["**/*.tsx"],
"denyModules": ["react", "react-*"],
"ignoreMatches": ["src/server/allowed-view.tsx", "react-awsome-lib"],
"ignoreTypeImports": true
}
}
]
}
configVersion (obligatoire) : chaîne de version de la configuration$schema (optionnel) : référence au schéma JSON pour la validationconditionNames (optionnel) : tableau de noms de conditions pour la résolution des exportscustomAssetExtensions (optionnel) : extensions d'assets supplémentaires traitées comme des imports résolubles (ex. ["glb", "mp3"]). La liste par défaut couvre les extensions courantes pour les polices, images, fichiers de configuration.ignoreFiles (optionnel) : motifs de fichiers globaux à ignorer dans tous les workspaces. Les fichiers ignorés par Git sont ignorés par défaut.processIgnoredFiles (optionnel) : motifs de fichiers globaux à traiter même s'ils correspondent à gitignore ou à ignoreFiles.nodeModulesResolution (optionnel) : détermine avec quel package.json chaque import tiers est validé pour les vérifications , , et . Configurez-le comme un objet — la forme générée par . est (par défaut, valide par rapport au d'entrée du workspace) ou (valide par rapport au propriétaire de chaque fichier — à utiliser pour la disposition par défaut de pnpm, où chaque package ne résout que ses propres dépendances). (par défaut ) permet au code des packages d'utiliser les dev dependencies déclarées uniquement à la racine du monorepo sans que ou ne les signalent. Une chaîne simple (ex. ) est également acceptée comme forme abrégée rétrocompatible pour . S'applique à tous les workspaces. Voir la .Chaque workspace peut contenir les propriétés suivantes :
path (obligatoire) : chemin du répertoire cible pour ce workspace (soit ., soit un chemin commençant par un nom de sous-répertoire)followMonorepoPackages (optionnel) : contrôle la résolution des packages du monorepo. true suit tous les packages du workspace (par défaut), false la désactive, un tableau ne suit que les noms de packages sélectionnés.prodEntryPoints (optionnel) : motifs de points d'entrée de production au niveau du workspace pour les valeurs par défaut des détecteursdevEntryPoints (optionnel) : motifs de points d'entrée de développement au niveau du workspace pour les valeurs par défaut des détecteursignoreEntryPoints (optionnel) : motifs au niveau du workspace pour les points d'entrée restants dont vous n'avez plus besoin. Les fichiers correspondant à ces motifs ne sont pas traités comme des problèmes — ils ne sont jamais signalés comme fichiers orphelins, et leurs exports inutilisés ne sont pas signalés. Utile pour les fichiers qui doivent rester commités mais ne sont plus câblés dans l'application.moduleBoundaries (optionnel) : tableau de règles de limites de modulesname (obligatoire) : nom de la limitepattern (obligatoire) : motif glob pour les fichiers de cette limiteallow (optionnel) : tableau de motifs d'import autorisésdeny (optionnel) : tableau de motifs d'import interdits (remplace allow)rule (obligatoire) : type de la règle, actuellement uniquement relative-internal-absolute-externalautofix (optionnel) : indique s'il faut corriger automatiquement les violations de conventions d'import (défaut : false)domains (obligatoire) : tableau de définitions de domaines. Peut être une chaîne (motif glob) ou un objet avec :
path (obligatoire) : répertoire contenant les fichiers du domainealias (optionnel) : alias à utiliser pour les imports absolus du code de ce domaineenabled (optionnel) : définir sur false pour ignorer les vérifications pour ce domaine (défaut : true)Chaque propriété de détection peut être configurée comme :
CircularImportsDetection :
enabled (obligatoire) : active/désactive la détection des imports circulairesignoreTypeImports (optionnel) : exclut les imports de type uniquement lors de la construction du graphe (défaut : false)DuplicatedCodeDetection :
enabled (obligatoire) : active/désactive la détection du code dupliquéblindIdentifiers (optionnel) : traite les noms comme des jokers, de sorte qu'une copie renommée compte toujours (défaut : false)blindStrings (optionnel) : traite le contenu des chaînes et des templates comme des jokers (défaut : false)blindNumbers (optionnel) : traite les littéraux numériques comme des jokers (défaut : false)minTokens (optionnel) : plus petite duplication à signaler, en tokens (défaut : 50)minLines (optionnel) : plus petite duplication à signaler, en lignes (défaut : 3)minDepth (optionnel) : profondeur d'imbrication minimale, en comptant le bloc lui-même. 2 exige au moins un niveau imbriqué (défaut : 0)minStatements (optionnel) : nombre minimal d'instructions ; s'applique uniquement aux blocs d'instructions (défaut : 0)minDuplicates (optionnel) : nombre de copies qu'un fragment doit avoir avant d'être signalé (défaut : 2)OrphanFilesDetection :
enabled (obligatoire) : active/désactive la détection des fichiers orphelinsvalidEntryPoints (optionnel) : tableau de motifs de points d'entrée valides. S'il est omis, utilise par défaut prodEntryPoints + devEntryPoints du niveau workspace.ignoreTypeImports (optionnel) : exclut les imports de type uniquement lors de la construction du graphe (défaut : false)graphExclude (optionnel) : motifs de fichiers à exclure de l'analyse du grapheautofix (optionnel) : supprime automatiquement les fichiers orphelins détectés lors de l'exécution de rev-dep config run --fix (défaut : false)UnusedNodeModulesDetection :
enabled (obligatoire) : active/désactive la détection des modules inutilisésincludeModules (optionnel) : motifs de modules à inclure dans l'analyseexcludeModules (optionnel) : motifs de modules à exclure de l'analysepkgJsonFieldsWithBinaries (optionnel) : champs du Package.json contenant des références binaires (ex. lint-staged). Effectue une recherche en texte brutfilesWithBinaries (optionnel) : motifs de fichiers à rechercher pour l'utilisation de binaires. Effectue une recherche en texte brutfilesWithModules (optionnel) : motifs de fichiers non JS/TS à rechercher pour les imports de modules (ex. scripts shell). Effectue une recherche en texte brutoutputType (optionnel) : format de sortie - "list", "groupByModule", "groupByFile"MissingNodeModulesDetection :
enabled (obligatoire) : active/désactive la détection des modules manquantsincludeModules (optionnel) : motifs de modules à inclure dans l'analyseexcludeModules (optionnel) : motifs de modules à exclure de l'analyseoutputType (optionnel) : format de sortie - "list", "groupByModule", "groupByFile", "groupByModuleFilesCount"UnusedExportsDetection :
enabled (obligatoire) : active/désactive la détection des exports inutilisésvalidEntryPoints (optionnel) : motifs glob pour les fichiers dont les exports ne sont jamais signalés comme inutilisés. S'il est omis, utilise par défaut prodEntryPoints + devEntryPoints du niveau workspace.ignoreTypeExports (optionnel) : ignore export type / export interface de l'analyse (défaut : false)graphExclude (optionnel) : motifs de fichiers à exclure de l'analyse des exports inutilisésignore (optionnel) : correspondance de motifs glob de chemins de fichiers (relatifs au répertoire du chemin du workspace) vers des motifs glob de noms/specifiers d'export à supprimer ; chaque valeur peut être une chaîne ou un tableau de chaînesignoreFiles (optionnel) : motifs glob de chemins de fichiers ; tous les exports inutilisés des fichiers correspondants sont supprimésignoreExports (optionnel) : noms/specifiers d'export (ou globs) à supprimer globalement (prend en charge )UnresolvedImportsDetection :
enabled (obligatoire) : active/désactive la détection des imports non résolusignore (optionnel) : correspondance de motifs glob de chemins de fichiers (relatifs au répertoire du chemin du workspace) vers des motifs glob de demandes d'import à supprimer ; chaque valeur peut être une chaîne ou un tableau de chaînesignoreFiles (optionnel) : motifs glob de chemins de fichiers ; tous les imports non résolus des fichiers correspondants sont supprimésignoreImports (optionnel) : demandes d'import (ou globs) à supprimer globalement dans les résultats non résolusDevDepsUsageOnProdDetection :
enabled (obligatoire) : active/désactive la détection de l'utilisation restreinte des dev dependenciesprodEntryPoints (optionnel) : motifs de points d'entrée de production à partir desquels tracer les dépendances. S'il est omis, utilise par défaut prodEntryPoints du niveau workspace.ignoreTypeImports (optionnel) : exclut les imports de type uniquement du parcours du graphe et de la correspondance des modules (défaut : false)RestrictedImportsDetection :
enabled (obligatoire) : active/désactive la détection des imports restreintsentryPoints (obligatoire si activé) : motifs de points d'entrée utilisés pour construire le graphe de dépendances atteignable (les points d'entrée du niveau workspace ne sont pas appliqués ici)graphExclude (optionnel) : motifs de fichiers à exclure de l'analyse du graphe des imports restreintsdenyFiles (optionnel) : motifs de chemins de fichiers interdits (ex. ["**/*.tsx"])denyModules (optionnel) : motifs de modules interdits (ex. ["react", "react-*"])ignoreMatches (optionnel) : motifs de fichiers/modules à supprimer des résultats d'imports restreintsignoreTypeImports (optionnel) : exclut les imports de type uniquement du parcours (défaut : false)L'approche par configuration offre des avantages de performance significatifs :
Cela rend les vérifications basées sur la configuration plus rapides que l'exécution de commandes individuelles en séquence, en particulier pour les grandes bases de code avec plusieurs sous-packages.
Des exemples pratiques montrent comment utiliser les commandes CLI de rev-dep pour explorer, déboguer ou créer des vérifications de qualité de code pour votre projet.
rev-dep resolve --file path/to/file.ts
Vous verrez tous les points d’entrée qui requièrent implicitement ce fichier, ainsi que les chemins de résolution.
### **Comment vérifier si un fichier est utilisé**```
rev-dep resolve --file path/to/file.ts --compact-summary
Indique combien de points d’entrée dépendent indirectement du fichier.
rev-dep entry-points
Excluez les points d'entrée du framework si nécessaire à l'aide de `--result-exclude`.
Par exemple, excluez les points d'entrée valides de Next.js lors de l'utilisation du routeur de pages, excluez le répertoire scripts - les scripts sont des points d'entrée valides et excluez tous les fichiers de test:```
rev-dep entry-points --result-exclude "pages/**","scripts/**","**/*.test.*"
rev-dep files --entry-point path/to/file.ts
Utile pour identifier les composants lourds ou les dépendances involontaires.
### **Comment réduire les importations inutiles pour un point d'entrée**
1. Listez tous les fichiers importés : ```
rev-dep files --entry-point path/to/entry.ts
rev-dep circular
### **Comment détecter le code dupliqué**```
rev-dep duplicated-code
Signale les blocs de code répétés et les éléments JSX - des unités que vous pouvez extraire - plutôt que des lignes répétées. Ajoutez --blind-identifiers pour détecter les copies dont les variables ont été renommées.
rev-dep node-modules unused
### **Comment trouver les modules node manquants**```
rev-dep node-modules missing
rev-dep node-modules dirs-size
### **Comment détecter les dépendances de développement utilisées dans le code de production**```
rev-dep config run
Lorsque devDepsUsageOnProdDetection est activé dans votre configuration, rev-dep va :
devDependencies dans package.jsonExemple de sortie :``` ❌ Restricted Dev Dependencies Usage Issues (2): lodash (dev dependency) - src/components/Button.tsx (from entry point: src/pages/index.tsx) - src/utils/helpers.ts (from entry point: src/pages/index.tsx) eslint (dev dependency) - src/config/eslint-config.js (from entry point: src/server.ts)
**Notes importantes :**
- Les imports de types uniquement (p. ex., `import type { ReactNode } from 'react'`) sont ignorés lorsque `ignoreTypeImports` est activé
- Seules les dépendances de `devDependencies` dans package.json sont signalées
- Les dépendances de production de `dependencies` sont autorisées
- Aide à prévenir les échecs d'exécution dans les builds de production
## Travailler avec Monorepo 🏗️
Rev-dep offre un support de première classe pour les projets monorepo, permettant une analyse précise des dépendances entre les paquets du workspace.
### Indicateur followMonorepoPackages
L'indicateur `--follow-monorepo-packages` permet de résoudre les imports depuis les paquets workspace du monorepo. Par défaut, cet indicateur est défini sur `false` pour maintenir la compatibilité avec les projets à paquet unique.```bash
# Enable monorepo package resolution
rev-dep circular --follow-monorepo-packages
rev-dep resolve --file src/utils.ts --follow-monorepo-packages
rev-dep entry-points --follow-monorepo-packages
Une fois activé, rev-dep va :
Rev-dep prend entièrement en charge le champ exports dans les fichiers package.json, qui est la méthode standard pour définir les points d'entrée des paquets dans les projets Node.js modernes.
La prise en charge de la carte des exports inclut :
node, import, default et des conditions personnaliséesPour contrôler quels exports conditionnels sont résolus, utilisez le drapeau --condition-names. Cela vous permet de spécifier la priorité des conditions lors de la résolution des exports de paquets :```bash
rev-dep circular --condition-names=node,import,default rev-dep resolve --file src/utils.ts --condition-names=import,node rev-dep entry-points --condition-names=default,node,import
Les conditions sont traitées dans l'ordre spécifié, la première condition correspondante étant utilisée. Les conditions courantes incluent :
- `node` - Environnement Node.js
- `import` - Modules ES
- `require` - CommonJS
- `default` - Condition de repli
- Conditions personnalisées spécifiques à votre projet ou à vos outils de build
Exemple de package.json avec exports :```json
{
"name": "@myorg/utils",
"exports": {
".": {
"import": "./dist/index.mjs",
"require": "./dist/index.js",
"default": "./dist/index.js"
},
"./helpers": "./dist/helpers.js",
"./types/*": "./dist/types/*.d.ts"
}
}
Détection de monorepo : Lorsque followMonorepoPackages est activé, rev-dep recherche la configuration des espaces de travail (pnpm-workspace.yaml, workspaces de package.json, etc.)
Résolution des packages : Les imports vers les packages de l'espace de travail sont résolus à l'aide de la configuration des exports du package, avec repli sur les champs main/module lorsque les exports ne sont pas définis.
Validation des dépendances : L'outil vérifie que les imports inter-packages ne sont autorisés que lorsque le package cible est répertorié dans les dependencies ou devDependencies du consommateur.
Résolution des chemins : Tous les chemins sont résolus par rapport à la racine de leur package respectif, ce qui garantit un suivi précis des dépendances dans l'ensemble du monorepo.
Cela rend rev-dep particulièrement efficace pour les projets monorepo à grande échelle, où la compréhension des dépendances inter-packages est cruciale pour maintenir la qualité du code et l'architecture.
Rev-dep peut effectuer plusieurs vérifications sur un monorepo de plus de 500k lignes de code avec plusieurs sous-packages en environ 150 ms.
Il surpasse Madge, dpdm, dependency-cruiser, skott, knip, depcheck et d'autres outils similaires.
Voici une comparaison des performances de tâches spécifiques entre rev-dep et les alternatives :
Plateforme : WSL Linux Debian Intel(R) Core(TM) i9-14900KF CPU
Mesures :
hyperfine -w 4 -r 8(4 essais de préchauffage + 8 exécutions mesurées)Projet : 580k lignes de code, 6024 fichiers de code source d'une application next.js
Le tableau ci-dessous présente une comparaison des performances de différents outils de détection des imports circulaires.
La vérification circulaire de rev-dep est ~20 fois plus rapide que l'alternative la plus rapide.
* knip ignore toujours les arêtes d'import de type uniquement et n'offre aucun drapeau pour les inclure. Chaque cycle de
ce codebase en contient au moins un, donc knip rapporte 0 cycle - ses 3 040 ms sont une véritable analyse
complète, mais d'un graphe plus petit. rev-dep circular -t, qui applique la même règle, concorde
exactement (0 cycle) en 143.3 ms ± 10.3.
Plateforme : WSL Linux Debian Intel(R) Core(TM) i9-14900KF CPU
Mesures :
hyperfine -w 4 -r 8(4 essais de préchauffage + 8 exécutions mesurées)Projet : 580k lignes de code, 6024 fichiers de code source d'une application next.js
Voir les mesures détaillées avec le temps moyen et les commandes utilisées dans PERFORMANCE.md.
Détecter les dépendances circulaires dans votre projet
Analyse le projet pour trouver les dépendances circulaires entre les modules. Les dépendances circulaires peuvent provoquer des problèmes difficiles à déboguer et devraient généralement être évitées.``` rev-dep circular [flags]
#### Exemples```
rev-dep circular --ignore-types-imports
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
-c, --cwd string Working directory for the command (default "$PWD") --follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names -h, --help help for circular -t, --ignore-type-imports Exclude type imports from the analysis --process-ignored-files strings Glob patterns to process even if they are ignored by gitignore or exclude patterns --tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json) -v, --verbose Show warnings and verbose output
### rev-dep config
Créer et exécuter des fichiers de configuration rev-dep
#### Synopsis
Commandes pour créer et exécuter des fichiers de configuration rev-dep.
#### Options```
-c, --cwd string Working directory (default "$PWD")
-h, --help help for config
Exécute toutes les vérifications définies dans (.)rev-dep.config.json(c)
Traite le fichier (.)rev-dep.config.json(c) et exécute toutes les vérifications activées (imports circulaires, fichiers orphelins, limites de modules, conventions d'importation, modules Node, exports inutilisés, imports non résolus, imports restreints et utilisation restreinte des dépendances de développement) pour chaque espace de travail.``` rev-dep config run [flags]
#### Options```
-c, --cwd string Working directory (default "$PWD")
--fix Automatically fix fixable issues
--format string Output format (json, issues-list)
-h, --help help for run
--lint-config Also lint the config after running; prints only error/warning counts and fails (non-zero exit) on any lint error. Use 'config lint' for details and --fix
--lint-config-rules strings Which lint rules to run with --lint-config (comma-separated). Default: all. Implies --lint-config
--list-all-issues List all issues instead of limiting output
--recheck Run all checks again after '--fix' to validate the final state
--update-snapshot Rewrite every configured duplicated-code snapshot from this run, acknowledging what it found.
-v, --verbose Show warnings and verbose output
--workspaces strings Subset of workspaces to run (comma-separated list of workspace paths)
Initialiser un nouveau fichier rev-dep.config.json
Créer un nouveau fichier de configuration rev-dep.config.json dans le répertoire courant avec les paramètres par défaut.``` rev-dep config init [flags]
#### Options```
-c, --cwd string Working directory (default "$PWD")
-h, --help help for init
Signale (et éventuellement supprime) les motifs de glob/chemin de configuration qui ne correspondent à rien
Analyse un (.)rev-dep.config.json(c) pour détecter les motifs de glob et de chemin « morts » — motifs d'ignorance, motifs de points d'entrée, chemins d'espace de travail, exclusions du graphe, fichiers/modules refusés et similaires — qui ne correspondent plus à aucun fichier ou module découvert. Au fil du temps, les configurations accumulent des motifs pour des fichiers qui ont été renommés ou supprimés ; cette commande les fait remonter à la surface afin que la configuration reste épurée.
Avec --fix, les motifs morts sont supprimés sur place, en préservant tous les commentaires et le formatage. Certains motifs sont signalés mais jamais supprimés automatiquement, car leur suppression pourrait modifier le comportement d'un contrôle ou rendre la configuration invalide — chemins d'espace de travail, points d'entrée / fichiers / modules requis, et sélecteurs de frontières de modules. Ceux-ci sont marqués « non auto-supprimés » ; résolvez-les à la main.``` rev-dep config lint [flags]
#### Options```
-c, --cwd string Working directory (default "$PWD")
--fix Remove dead patterns from the config file (preserves comments and formatting)
-h, --help help for lint
--rules strings Lint rules to run (comma-separated): orphan-file-globs, orphan-module-globs, overlapping-globs, trailing-commas, compact. Default: all. orphan-file-globs/overlapping-globs use file discovery; orphan-module-globs parses the dependency tree; trailing-commas and compact only read the config file.
-v, --verbose Show warnings and verbose output
Mettre à niveau une configuration v2 vers le schéma v3 (2.0)
Mettre à niveau un (.)rev-dep.config.json(c) du schéma v2 vers v3 (version de configuration 2.0).
Il applique les modifications sûres et sans ambiguïté en place (renomme le tableau 'rules' de premier niveau en 'workspaces', fait passer 'configVersion' à 2.0, et supprime l'option abandonnée 'algorithm' des détecteurs d'importations circulaires), tout en préservant les commentaires et le formatage. Passez en revue la modification avec git avant de valider.
Il liste ensuite ce qu'il n'a PAS pu modifier pour vous : les motifs glob dont l'ensemble de correspondances peut avoir changé sous les règles plus strictes alignées sur gitignore de v3, ainsi que les changements de comportement qu'aucune modification de configuration ne peut corriger. Examinez-les manuellement - consultez le guide des changements cassants de v3.``` rev-dep config migrate [flags]
#### Options```
-c, --cwd string Working directory (default "$PWD")
-h, --help help for migrate
Outils de débogage pour inspecter les internes du parseur et du résolveur
Outils de débogage pour inspecter comment rev-dep analyse les fichiers et résout les dépendances. La sortie ne suit pas semver.
-h, --help help for debug
### rev-dep debug get-tree-for-cwd
Débogage : Afficher l'arbre de dépendances complet pour l'analyse
#### Synopsis
Outil de débogage pour inspecter l'arbre de dépendances complet. La sortie ne suit pas semver.```
rev-dep debug get-tree-for-cwd [flags]
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
--cwd string Working directory for the command (default "$PWD")
--follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names
-h, --help help for get-tree-for-cwd -t, --ignore-type-imports Exclude type imports from the analysis --include-dev-deps-from-root Treat the monorepo root package.json devDependencies as available to package code, so they are not reported as missing or unresolved. Mirrors config nodeModulesResolution.includeDevDepsFromRoot --node-modules-resolution string Which package.json each import is validated against: 'entry-package' (the cwd package.json, default) or 'nearest-package' (each file's own nearest package.json) (default "entry-package") --tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json) -v, --verbose Show warnings and verbose output
### rev-dep debug list-cwd-files
Liste tous les fichiers dans le répertoire de travail courant
#### Synopsis
Liste récursivement tous les fichiers dans le répertoire spécifié,
avec des options pour filtrer les résultats.```
rev-dep debug list-cwd-files [flags]
rev-dep debug list-cwd-files --include='.ts' --exclude='.test.ts'
#### Options```
--count Only display the count of matching files
--cwd string Directory to list files from (default "$PWD")
--exclude strings Exclude files matching these glob patterns
-h, --help help for list-cwd-files
--include strings Only include files matching these glob patterns
Débogage : afficher les imports analysés pour un seul fichier
Outil de débogage pour inspecter comment l'analyseur traite un fichier spécifique. La sortie ne suit pas le semver.``` rev-dep debug parse-file [flags]
#### Options```
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
--cwd string Working directory for the command (default "$PWD")
--file string file to parse
--follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names
-h, --help help for parse-file
--include-dev-deps-from-root Treat the monorepo root package.json devDependencies as available to package code, so they are not reported as missing or unresolved. Mirrors config nodeModulesResolution.includeDevDepsFromRoot
--node-modules-resolution string Which package.json each import is validated against: 'entry-package' (the cwd package.json, default) or 'nearest-package' (each file's own nearest package.json) (default "entry-package")
--tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json)
-v, --verbose Show warnings and verbose output
Débogage : affiche les alias de configuration TypeScript analysés
Outil de débogage permettant d'inspecter la manière dont la configuration TypeScript est analysée et quels alias sont extraits. La sortie ne suit pas la sémantique versionnelle (semver).``` rev-dep debug parse-tsconfig [flags]
#### Options```
-h, --help help for parse-tsconfig
--tsconfig string Path to TypeScript configuration file
Détecte le code dupliqué parmi (et dans) les fichiers du projet
Analyse chaque fichier source à la recherche de fragments copiables - blocs entre accolades et éléments JSX, à tous les niveaux d'imbrication - et signale ceux qui apparaissent plus d'une fois.
La comparaison ignore entièrement la mise en forme et les commentaires, donc les copies ré-indentées correspondent toujours.
Quatre filtres déterminent ce qui mérite d'être signalé. --min-tokens et --min-lines mesurent la taille; --min-depth et --min-statements mesurent la complexité, ce qui distingue un objet de configuration dupliqué à trois clés d'une logique dupliquée - aucun seuil de taille ne peut le faire, car les clés et les valeurs de chaîne de l'objet peuvent être longues. --min-duplicates définit le nombre de copies nécessaire pour être signalé.
Par défaut, le code doit correspondre tel qu'il est écrit. Chaque option --blind-* retire une catégorie de jetons de la comparaison, et elles se combinent librement :
--blind-identifiers les noms sont des jokers, donc une copie dont les variables, fonctions ou composants ont été renommés est toujours signalée --blind-strings les contenus de chaînes et de templates sont des jokers --blind-numbers les littéraux numériques sont des jokers``` rev-dep duplicated-code [flags]
#### Exemples```
rev-dep duplicated-code --cwd ./src --blind-identifiers
--blind-identifiers Ignore the spelling of names, so a copy whose variables, functions or components were renamed still counts as duplication.
--blind-numbers Ignore the value of numeric literals, so a copy with different constants still counts
--blind-strings Ignore the text of string and template literals, so a copy with different messages or keys still counts
-c, --cwd string Working directory for the command (default "$PWD") -f, --format string Output format: "human" or "json". JSON reports every finding with its canonical hash and the byte and line range of each occurrence, for comparing against another run or another tool (default "human") -h, --help help for duplicated-code --ignore-files strings Glob patterns of files to leave out of the analysis. --json-snippets Include the source of each finding in JSON output. Off by default because snippets dominate the file size and a comparison keyed on ranges does not need them --min-depth int Smallest duplication to report, in nesting levels counting the block itself. 1 admits everything; 2 requires at least one nested level, which is what filters out flat objects and single JSX elements however long their keys or strings are --min-duplicates int How many copies a chunk needs before it is reported. Raise to 3 to ignore code that has only been copied once (default 2) --min-lines int Smallest duplication to report, in lines of the first occurrence (default 3) --min-statements int Smallest duplication to report, in statements directly inside the block. Applies only to statement blocks (function and control-flow bodies); object literals and JSX elements are expressions and are not filtered by it - use --min-depth for those --min-tokens int Smallest duplication to report, in tokens. Tokens rather than characters because the count does not change when a --blind-* flag is applied, so one number means the same amount of code whatever is being ignored (default 50) --process-ignored-files strings Glob patterns to analyse even when gitignore excludes them. --skip-objects Do not report duplications that are only object literals. --snapshot string Path to a JSON snapshot of acknowledged duplications. With it, the command reports what changed since the snapshot instead of everything that exists, and exits non-zero on any difference --update-snapshot Rewrite the --snapshot file from this run, acknowledging everything it found. Always explicit: nothing updates a snapshot on its own
### rev-dep entry-points
Découvrez et listez tous les points d'entrée du projet
#### Synopsis
Analyse la structure du projet pour identifier tous les points d'entrée potentiels.
Utile pour comprendre l'architecture et les dépendances de votre application.```
rev-dep entry-points [flags]
rev-dep entry-points --print-deps-count
#### Options```
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
-n, --count Only display the number of entry points found
-c, --cwd string Working directory for the command (default "$PWD")
--follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names
--graph-exclude strings Exclude files matching these glob patterns from analysis
-h, --help help for entry-points
-t, --ignore-type-imports Exclude type imports from the analysis
--print-deps-count Show the number of dependencies for each entry point
--process-ignored-files strings Glob patterns to process even if they are ignored by gitignore or exclude patterns
--result-exclude strings Exclude files matching these glob patterns from results
--result-include strings Only include files matching these glob patterns in results
--tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json)
-v, --verbose Show warnings and verbose output
Liste tous les fichiers dans l'arbre de dépendances d'un point d'entrée
Recherche et liste récursivement tous les fichiers requis par le point d'entrée spécifié.``` rev-dep files [flags]
#### Exemples```
rev-dep files --entry-point src/index.ts
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
-n, --count Only display the count of files in the dependency tree -c, --cwd string Working directory for the command (default "$PWD") -p, --entry-point string Entry point file to analyze (required) --follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names -h, --help help for files -t, --ignore-type-imports Exclude type imports from the analysis --process-ignored-files strings Glob patterns to process even if they are ignored by gitignore or exclude patterns --tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json) -v, --verbose Show warnings and verbose output
### rev-dep imported-by
Liste tous les fichiers qui importent directement le fichier spécifié
#### Synopsis
Recherche et liste tous les fichiers du projet qui importent directement le fichier spécifié.
Ceci est utile pour comprendre l'impact des modifications apportées à un fichier particulier.```
rev-dep imported-by [flags]
rev-dep imported-by --file src/utils/helpers.ts
#### Options```
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
-n, --count Only display the count of importing files
-c, --cwd string Working directory for the command (default "$PWD")
-f, --file string Target file to find importers for (required)
--follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names
-h, --help help for imported-by
--list-imports List the import identifiers used by each file
--process-ignored-files strings Glob patterns to process even if they are ignored by gitignore or exclude patterns
--tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json)
-v, --verbose Show warnings and verbose output
Compte les lignes de code réelles du projet, en excluant les commentaires et les lignes vides.``` rev-dep lines-of-code [flags]
#### Exemples```
rev-dep lines-of-code
-c, --cwd string Directory to analyze (default "$PWD") -h, --help help for lines-of-code
### rev-dep list-cwd-files
Liste tous les fichiers du répertoire de travail actuel
#### Synopsis
Liste récursivement tous les fichiers du répertoire spécifié,
avec des options pour filtrer les résultats.```
rev-dep list-cwd-files [flags]
rev-dep list-cwd-files --include='.ts' --exclude='.test.ts'
#### Options```
--count Only display the count of matching files
--cwd string Directory to list files from (default "$PWD")
--exclude strings Exclude files matching these glob patterns
-h, --help help for list-cwd-files
--include strings Only include files matching these glob patterns
Liste les imports non résolus dans le projet
Détecte et liste les imports qui n'ont pas pu être résolus lors de la résolution des imports. Regroupe les imports par fichier.``` rev-dep unresolved [flags]
#### Options```
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
--custom-asset-extensions strings Additional asset extensions treated as resolvable (e.g. glb,mp3)
-c, --cwd string Working directory for the command (default "$PWD")
--follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names
-h, --help help for unresolved
--ignore stringToString Map of file path (relative to cwd) to exact import request to ignore (e.g. --ignore src/index.ts=some-module) (default [])
--ignore-files strings File path glob patterns to ignore in unresolved output
--ignore-imports strings Import requests to ignore globally in unresolved output
--include-dev-deps-from-root Treat the monorepo root package.json devDependencies as available to package code, so they are not reported as missing or unresolved. Mirrors config nodeModulesResolution.includeDevDepsFromRoot
--node-modules-resolution string Which package.json each import is validated against: 'entry-package' (the cwd package.json, default) or 'nearest-package' (each file's own nearest package.json) (default "entry-package")
--process-ignored-files strings Glob patterns to process even if they are ignored by gitignore or exclude patterns
--tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json)
-v, --verbose Show warnings and verbose output
Analyser et gérer les dépendances Node.js
Outils pour analyser et gérer les dépendances des modules Node.js. Aide à identifier les dépendances inutilisées, manquantes ou dupliquées dans votre projet.
rev-dep node-modules used -p src/index.ts rev-dep node-modules unused --exclude-modules=@types/* rev-dep node-modules missing --entry-points=src/main.ts
#### Options```
-h, --help help for node-modules
Analyse l'utilisation disque de node_modules
Fournit une analyse détaillée de la taille du répertoire node_modules. Aide à identifier les dépendances les plus gourmandes en espace.``` rev-dep node-modules analyze-size [flags]
#### Exemples```
rev-dep node-modules analyze-size
-c, --cwd string Working directory for the command (default "$PWD") -h, --help help for analyze-size
### rev-dep node-modules dirs-size
Calcule la taille cumulée des fichiers dans les répertoires node_modules
#### Synopsis
Calcule et affiche la taille des dossiers node_modules
dans le répertoire courant et ses sous-répertoires. Les tailles seront inférieures à la taille réelle occupée sur le disque. L'outil calcule la taille réelle des fichiers plutôt que la taille sur le disque (liée à l'utilisation des blocs disque)```
rev-dep node-modules dirs-size [flags]
rev-dep node-modules dirs-size
#### Options```
-c, --cwd string Working directory for the command (default "$PWD")
-h, --help help for dirs-size
Trouver et optimiser les installations de paquets en double
Identifie les paquets installés plusieurs fois dans node_modules. Peut optimiser le stockage en créant des liens symboliques entre les paquets en double.``` rev-dep node-modules installed-duplicates [flags]
#### Exemples```
rev-dep node-modules installed-duplicates --optimize --size-stats
-c, --cwd string Working directory for the command (default "$PWD") -h, --help help for installed-duplicates --isolate Create symlinks only within the same top-level node_module directories. By default optimize creates symlinks between top-level node_module directories (eg. when workspaces are used). Needs --optimize flag to take effect --optimize Automatically create symlinks to deduplicate packages --size-stats Print node modules dirs size before and after optimization. Might take longer than optimization itself --verbose Show detailed information about each optimization
### rev-dep node-modules installés
Lister tous les packages npm installés dans le projet
#### Synopsis
Analyse récursivement les répertoires node_modules pour lister tous les packages installés.
Utile pour auditer les dépendances dans les monorepos.```
rev-dep node-modules installed [flags]
rev-dep node-modules installed --include-modules=@myorg/*
#### Options```
-c, --cwd string Working directory for the command (default "$PWD")
-e, --exclude-modules strings list of modules to exclude from the output
-h, --help help for installed
-i, --include-modules strings list of modules to include in the output
Find imported packages not listed in package.json
Identifies packages that are imported in your code but not declared in your package.json dependencies.``` rev-dep node-modules missing [flags]
#### Exemples```
rev-dep node-modules missing --entry-points=src/main.ts
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
-n, --count Only display the count of modules -c, --cwd string Working directory for the command (default "$PWD") -p, --entry-points strings Entry point file(s) to start analysis from (default: auto-detected) -e, --exclude-modules strings list of modules to exclude from the output -b, --files-with-binaries strings Additional files to search for binary usages. Use paths relative to cwd -m, --files-with-node-modules strings Additional files to search for module imports. Use paths relative to cwd --follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names --group-by-file Organize output by project file path --group-by-module Organize output by npm package name --group-by-module-files-count Organize output by npm package name and show count of files using it -h, --help help for missing -t, --ignore-type-imports Exclude type imports from the analysis --include-dev-deps-from-root Treat the monorepo root package.json devDependencies as available to package code, so they are not reported as missing or unresolved. Mirrors config nodeModulesResolution.includeDevDepsFromRoot -i, --include-modules strings list of modules to include in the output --node-modules-resolution string Which package.json each import is validated against: 'entry-package' (the cwd package.json, default) or 'nearest-package' (each file's own nearest package.json) (default "entry-package") --pkg-fields-with-binaries strings Additional package.json fields to check for binary usages --tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json) -v, --verbose Show warnings and verbose output --zero-exit-code Use this flag to always return zero exit code
### rev-dep node-modules prune-docs
Supprime les fichiers de type markdown/docs des paquets node_modules installés
#### Synopsis
Supprime les fichiers des paquets node_modules installés en fonction de motifs glob.
Utile pour élaguer les fichiers README/LICENSE/docs afin de réduire la taille des dépendances.```
rev-dep node-modules prune-docs [flags]
rev-dep node-modules prune-docs --defaults rev-dep node-modules prune-docs --patterns ".md,README.md,docs/**" rev-dep node-modules prune-docs --defaults --patterns ".txt"
#### Options```
-c, --cwd string Working directory for the command (default "$PWD")
--defaults Use default prune patterns: LICENSE, README.md, docs/**
-h, --help help for prune-docs
--pattern strings Alias for --patterns
-p, --patterns strings Glob patterns (relative to each package root) of files to remove, e.g. "*.md,README.md,docs/**"
Trouvez les paquets installés qui ne sont pas importés dans votre code
Compare les dépendances package.json avec les importations réelles dans votre codebase pour identifier les paquets potentiellement inutilisés.``` rev-dep node-modules unused [flags]
#### Exemples```
rev-dep node-modules unused --exclude-modules=@types/*
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
-n, --count Only display the count of modules -c, --cwd string Working directory for the command (default "$PWD") -p, --entry-points strings Entry point file(s) to start analysis from (default: auto-detected) -e, --exclude-modules strings list of modules to exclude from the output -b, --files-with-binaries strings Additional files to search for binary usages. Use paths relative to cwd -m, --files-with-node-modules strings Additional files to search for module imports. Use paths relative to cwd --follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names -h, --help help for unused -t, --ignore-type-imports Exclude type imports from the analysis --include-dev-deps-from-root Treat the monorepo root package.json devDependencies as available to package code, so they are not reported as missing or unresolved. Mirrors config nodeModulesResolution.includeDevDepsFromRoot -i, --include-modules strings list of modules to include in the output --node-modules-resolution string Which package.json each import is validated against: 'entry-package' (the cwd package.json, default) or 'nearest-package' (each file's own nearest package.json) (default "entry-package") --pkg-fields-with-binaries strings Additional package.json fields to check for binary usages --tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json) -v, --verbose Show warnings and verbose output --zero-exit-code Use this flag to always return zero exit code
### rev-dep node-modules utilisés
Liste tous les packages npm importés dans votre code
#### Synopsis
Analyse votre code pour identifier quels packages npm sont réellement utilisés.
Aide à suivre les dépendances d'exécution de votre projet.```
rev-dep node-modules used [flags]
rev-dep node-modules used -p src/index.ts --group-by-module
#### Options```
--condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default)
-n, --count Only display the count of modules
-c, --cwd string Working directory for the command (default "$PWD")
-p, --entry-points strings Entry point file(s) to start analysis from (default: auto-detected)
-e, --exclude-modules strings list of modules to exclude from the output
-b, --files-with-binaries strings Additional files to search for binary usages. Use paths relative to cwd
-m, --files-with-node-modules strings Additional files to search for module imports. Use paths relative to cwd
--follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names
--group-by-entry-point Organize output by entry point file path
--group-by-entry-point-modules-count Organize output by entry point and show count of unique modules
--group-by-file Organize output by project file path
--group-by-module Organize output by npm package name
--group-by-module-entry-points-count Organize output by npm package name and show count of entry points using it
--group-by-module-files-count Organize output by npm package name and show count of files using it
--group-by-module-show-entry-points Organize output by npm package name and list entry points using it
-h, --help help for used
-t, --ignore-type-imports Exclude type imports from the analysis
--include-dev-deps-from-root Treat the monorepo root package.json devDependencies as available to package code, so they are not reported as missing or unresolved. Mirrors config nodeModulesResolution.includeDevDepsFromRoot
-i, --include-modules strings list of modules to include in the output
--node-modules-resolution string Which package.json each import is validated against: 'entry-package' (the cwd package.json, default) or 'nearest-package' (each file's own nearest package.json) (default "entry-package")
--pkg-fields-with-binaries strings Additional package.json fields to check for binary usages
--tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json)
-v, --verbose Show warnings and verbose output
Tracer et afficher le chemin de dépendance entre les fichiers de votre projet
Analyser et afficher la chaîne de dépendance entre les fichiers spécifiés. Aide à comprendre comment les différentes parties de votre base de code sont connectées.``` rev-dep resolve [flags]
#### Exemples```
rev-dep resolve -p src/index.ts -f src/utils/helpers.ts
-a, --all Show all possible resolution paths, not just the first one --compact-summary Display a compact summary of found paths --condition-names strings List of conditions for package.json imports resolution (e.g. node, imports, default) -c, --cwd string Working directory for the command (default "$PWD") -p, --entry-points strings Entry point file(s) or glob pattern(s) to start analysis from (default: auto-detected) -f, --file string Target file to check for dependencies --follow-monorepo-packages strings Enable resolution of imports from monorepo workspace packages. Pass without value to follow all, or pass package names --graph-exclude strings Glob patterns to exclude files from dependency analysis -h, --help help for resolve -t, --ignore-type-imports Exclude type imports from the analysis --include-dev-deps-from-root Treat the monorepo root package.json devDependencies as available to package code, so they are not reported as missing or unresolved. Mirrors config nodeModulesResolution.includeDevDepsFromRoot --module string Target node module name to check for dependencies --node-modules-resolution string Which package.json each import is validated against: 'entry-package' (the cwd package.json, default) or 'nearest-package' (each file's own nearest package.json) (default "entry-package") --process-ignored-files strings Glob patterns to process even if they are ignored by gitignore or exclude patterns --tsconfig-json string Path to tsconfig.json (default: ./tsconfig.json) -v, --verbose Show warnings and verbose output
<!-- cli-docs-end -->
## Glossaire 📚
Certains termes utilisés dans le domaine couvert par **rev-dep** peuvent prêter à confusion.
Voici un petit glossaire pour vous aider à naviguer parmi ces concepts.
### Dépendance
Une *dépendance* peut être comprise au sens littéral. Dans le contexte du graphe de dépendances d’un projet, elle peut désigner :
* un **module / paquet node** (un paquet est une dépendance d’un projet ou d’un fichier), ou
* un **fichier de code source** (un fichier est une dépendance d’un autre fichier s’il l’importe).
### Point d’entrée
Un *point d’entrée* est un fichier source qui **n’est importé par aucun autre fichier**.
Il peut représenter :
* l’entrée principale de l’application
* une page ou une fonctionnalité individuelle
* des fichiers de bootstrap de configuration ou de tests
- selon la structure du projet.
### Fichier inutilisé / fichier mort
Un fichier est considéré comme *inutilisé* ou *mort* lorsque :
* c’est un **point d’entrée** (rien ne l’importe), **et**
* son exécution ne **produit aucune sortie ou effet de bord significatif**.
En pratique, ces fichiers peuvent souvent être supprimés sans risque.
### Dépendance circulaire
Une *dépendance circulaire* se produit lorsqu’un fichier **s’importe directement ou indirectement lui-même** via une chaîne d’imports.
Cela peut entraîner un comportement d’exécution imprévisible, des valeurs non initialisées ou des bogues subtils.
Cependant, les dépendances circulaires entre **imports de types TypeScript uniquement** sont généralement inoffensives.
### Dépendance inverse (ou « dependents »)
Les fichiers qui *importent* un fichier donné.
Utile pour répondre à la question : « Qu’est-ce qui casse si je modifie ou supprime ce fichier ? »
### Graphe d’imports / graphe de dépendances
Une représentation visuelle de la manière dont les fichiers ou modules s’importent mutuellement.
### Dépendance manquante / module node inutilisé
Un module que votre code importe mais qui **n’est pas répertorié dans package.json**.
### Dépendance inutilisée / module node inutilisé
Une dépendance répertoriée dans **package.json** mais qui **n’est jamais importée** dans le code source.
### Répertoire racine / racine du projet
Le répertoire de premier niveau utilisé comme point de départ pour l’analyse des dépendances.
## Télémétrie
Rev-Dep collecte un unique événement **anonyme**, uniquement lors de l’exécution de `rev-dep config run`. En savoir plus dans la [documentation Télémétrie](https://rev-dep.com/docs/telemetry).
Pour vous désinscrire complètement, définissez `REV_DEP_TELEMETRY_OFF=true`.
## Fabriqué en 🇵🇱 et 🇯🇵 avec 🧠 par [@jayu](https://github.com/jayu)
J’espère que ce petit logiciel vous aidera à découvrir et à comprendre la complexité de votre projet, et donc à vous sentir plus confiant lors du refactoring. Si cet outil vous a été utile, n’hésitez pas à lui donner une ⭐ !
### Mes autres projets
- [CodeQue - Recherche de code structurelle](https://codeque.co)
- [Recherche de code structurelle VSCode](https://marketplace.visualstudio.com/items?itemName=CodeQue.codeque)
restrictedImportsDetectionrestrictedImportersDetection - liste blanche des points d'entrée pouvant atteindre transitivement un ensemble de fichiers/modules.restrictedDirectImportersDetection - restreint les fichiers pouvant importer directement un ensemble de fichiers/modules (non transitif).list-cwd-files - liste tous les fichiers de code source dans le CWD.debug - inspecte ce que rev-dep analyse, résout et découvre en interne.restrictedImportsDetection - bloquer l'import de fichiers/modules interdits depuis des points d'entrée sélectionnés.restrictedImportersDetection - mettre sur liste blanche les points d'entrée qui peuvent atteindre transitivement un ensemble de fichiers/modules.restrictedDirectImportersDetection - restreindre les fichiers pouvant importer directement un ensemble de fichiers/modules (non transitif).missingNodeModulesunusedNodeModulesunresolvedImports{ "resolutionType": ..., "includeDevDepsFromRoot": ... }rev-dep config initresolutionType"entry-package"package.json"nearest-package"package.jsonincludeDevDepsFromRootfalsemissingNodeModulesunresolvedImports"nearest-package"resolutionTypeworkspaces (obligatoire) : tableau d'objets workspacecircularImportsDetectionduplicatedCodeDetection (optionnel) : configuration de détection du code dupliqué (objet unique ou tableau d'objets)orphanFilesDetection (optionnel) : configuration de détection des fichiers orphelins (objet unique ou tableau d'objets)unusedNodeModulesDetection (optionnel) : configuration de détection des node modules inutilisés (objet unique ou tableau d'objets)missingNodeModulesDetection (optionnel) : configuration de détection des node modules manquants (objet unique ou tableau d'objets)unusedExportsDetection (optionnel) : configuration de détection des exports inutilisés (objet unique ou tableau d'objets)unresolvedImportsDetection (optionnel) : configuration de détection des imports non résolus (objet unique ou tableau d'objets)devDepsUsageOnProdDetection (optionnel) : configuration de détection de l'utilisation restreinte des dev dependencies (objet unique ou tableau d'objets)restrictedImportsDetection (optionnel) : restreint l'import de fichiers/modules interdits depuis les points d'entrée sélectionnés (objet unique ou tableau d'objets)restrictedImportersDetection (optionnel) : liste blanche des points d'entrée pouvant atteindre transitivement un ensemble de fichiers/modules (objet unique ou tableau d'objets)restrictedDirectImportersDetection (optionnel) : contraint les fichiers pouvant importer directement un ensemble de fichiers/modules ; non transitif (objet unique ou tableau d'objets)importConventions (optionnel) : tableau de règles de conventions d'importskipObjectsignoreFiles (optionnel) : motifs glob à exclure de l'analysesnapshotPath (optionnel) : chemin vers une base de référence commitée des duplications reconnues, relatif au workspace. Avec cela, la vérification signale ce qui a changé plutôt que le total"default"autofix (optionnel) : applique automatiquement les modifications d'exports inutilisés corrigeables lors de l'exécution de rev-dep config run --fix (défaut : false)| Tâche | Temps d'exécution [ms] | Alternative | Temps de l'alternative [ms] | Plus lent que Rev-dep |
|---|
| Rechercher les dépendances circulaires | 151 | knip | 3 040 | 20x |
| Rechercher les exports inutilisés | 186 | knip | 3 176 | 17x |
| Rechercher les fichiers inutilisés | 168 | knip | 3 006 | 18x |
| Rechercher les modules node inutilisés | 170 | knip | 3 069 | 18x |
| Rechercher les modules node manquants | 160 | knip | 3 076 | 19x |
| Lister tous les fichiers importés par un point d'entrée | 81 | madge | 6 591 | 81x |
| Découvrir les points d'entrée | 149 | madge | 13 632 | 92x |
| Appliquer les limites de modules | 164 | dependency-cruiser | 8 140 | 50x |
| Rechercher les imports restreints | 170 | dependency-cruiser | 10 995 | 65x |
| Rechercher les importateurs restreints | 179 | dependency-cruiser | 9 234 | 52x |
| Résoudre le chemin de dépendance entre fichiers | 221 | veuillez suggérer | ||
| Compter les lignes de code | 251 | veuillez suggérer | ||
| Analyser la taille des dossiers node_modules | 561 | veuillez suggérer |
| Outil | Version | Temps [ms] |
|---|
| 🥇 rev-dep | 3.0.0 | 154 |
| 🥈 knip * | 6.29.0 | 3 040 |
| 🥉 circular-dependency-scanner | 3.0.1 | 3 355 |
| dpdm-fast | 1.0.14 | 6 070 |
| dpdm | 4.2.0 | 6 667 |
| dependency-cruiser | 18.1.0 | 8 258 |
| madge | 8.0.0 | 13 569 |
| skott | 0.35.11 | 61 613 |