Existe-t-il un moyen de déterminer si vous avez des packages dans votre fichier package.json qui ne sont plus nécessaires?
Par exemple, lorsque j'essaie un package et commente ou supprime plus tard du code, mais oubliant de le désinstaller, je me retrouve avec quelques packages qui pourraient être supprimés.
Quelle serait une manière efficace de déterminer si un paquet pourrait être supprimé en toute sécurité?
node.js
dependencies
npm
Josh C
la source
la source
depcheck
répertorie tous les packages commeunused
étant tout simplement fauxnpx depcheck
Il existe également un package appelé
npm-check
:Il est assez puissant et activement développé. L'une de ses fonctionnalités vérifie les dépendances inutilisées - pour cette partie, il utilise le
depcheck
module mentionné dans l'autre réponse.la source
npm outdated
vérifie et répertorie les versions actuelles, souhaitées et les plus récentes des packages. Aucune liste de paquets inutilisés cependant.Si vous utilisez un système d'exploitation comme Unix (Linux, OSX, etc.), vous pouvez utiliser une combinaison de
find
etegrep
pour rechercher les instructions require contenant le nom de votre package:Si vous recherchez l'intégralité de l'
require('name-of-package')
instruction, n'oubliez pas d'utiliser le bon type de guillemets:ou
L'inconvénient est qu'il n'est pas entièrement automatique, c'est-à-dire qu'il n'extrait pas les noms de paquet
package.json
et ne les vérifie pas. Vous devez le faire vous-même pour chaque paquet. Étant donné qu'il nepackage.json
s'agit que de JSON, cela pourrait être résolu en écrivant un petit script qui permetchild_process.exec
d'exécuter cette commande pour chaque dépendance. Et faites-en un module. Et ajoutez-le au dépôt NPM ...la source
.jsx
fichiers et des.ts
fichiers, etc.: Dfiskeben a écrit:
Rendons la réponse de Fiskeben automatisée si, pour une raison quelconque, elle
depcheck
ne fonctionne pas correctement! (Par exemple, je l'ai essayé avec Typescript et cela a donné des erreurs d'analyse inutiles)Pour l'analyse,
package.json
nous pouvons utiliser le logicieljq
. Le script shell ci-dessous nécessite un nom de répertoire par où commencer.Tout d'abord, il crée deux fichiers temporaires où nous pouvons mettre en cache les noms et les fichiers des packages.
Cela commence par la
find
commande. La première et la deuxième ligne font ignorer les dossiersnode_modules
etbuild
(ou tout ce que vous voulez). La troisième ligne contient les extensions autorisées, vous pouvez en ajouter d'autres, par exemple des fichiers JSX ou JSON.Une fonction lira les types dépendants.
C'est d'abord
cat
lepackage.json
. Obtient ensuitejq
le groupe de dépendances requis. ({} +
est là pour ne pas générer d'erreur si par exemple il n'y a pas de dépendances entre pairs dans le fichier.)Après cela,
sed
extrait les parties entre les guillemets, le nom du package.-n
et lui.../p
dit d'imprimer les parties correspondantes et rien d'autre à partir dejq
la sortie JSON de. Ensuite, nous lisons cette liste de noms de packages dans unewhile
boucle.RES
est le nombre d'occurrences du nom du package entre guillemets. En ce moment c'estimport
/require
...'package'
/"package"
. Il fait l'affaire dans la plupart des cas.Ensuite, nous comptons simplement le nombre de lignes de résultat puis imprimons le résultat.
Avertissements:
tsconfig.json
fichiers (lib
option)grep
manuellement pour uniquement les fichiers^USED
etUNUSED
.la source
Nous pouvons utiliser le module npm ci-dessous à cet effet:
https://www.npmjs.com/package/npm-check-unused
la source
la plupart des réponses sont ici comment trouver les articles inutilisés.
Je voulais les supprimer automatiquement .
Installez ce projet de noeud.
$ npm install -g typescript tslint tslint-etc
Dans le répertoire racine, ajoutez un nouveau fichier tslint-imports.json
{ "extends": [ "tslint-etc" ], "rules": { "no-unused-declaration": true } }
Exécutez cela à vos risques et périls, faites une sauvegarde :)
$ tslint --config tslint-imports.json --fix --project .
la source
npx depcheck --json | jq '.dependencies[]' | xargs -L1 npm rm