Imprimer une liste de tous les modules node.js installés


134

Dans un script node.js sur lequel je travaille, je souhaite imprimer tous les modules node.js (installés à l'aide de npm) sur la ligne de commande. Comment puis-je faire ceci?

console.log(__filename);

//now I want to print all installed modules to the command line. How can I do this?

Dans ce cas, il peut être utile d'écrire une fonction qui renvoie le chemin du dossier modules node.js (si c'est possible). Une solution multiplateforme serait idéale.
— Anderson Green

Informations sur l'obtention de la liste des fichiers à partir d'un répertoire: stackoverflow.com/questions/2727167/…
— Anderson Green

Réponses:


100

Utilisez npm ls (il y a même une sortie json)

À partir du script:

test.js:

function npmls(cb) {
  require('child_process').exec('npm ls --json', function(err, stdout, stderr) {
    if (err) return cb(err)
    cb(null, JSON.parse(stdout));
  });
}
npmls(console.log);

courir:

> node test.js
null { name: 'x11', version: '0.0.11' }

Aussi, comment pouvez-vous obtenir le chemin du fichier du dossier modules?
— Anderson Green

Le chemin serait node_modules / [nom du module]. Je pense que cela devrait fonctionner sur toutes les plateformes. Notez que de cette façon, seul l'arborescence des modules 'locaux' est requreaffichée , et regarde d'abord node_modules, puis ../node_modules, ../../node_modules (voir nodejs.org/api/… ) et ensuite depuis NODE_PATH env var
— Andrey Sidorov

4
essayez npm ls --parseablejuste la liste des chemins
— Andrey Sidorov

262

Si vous n'êtes intéressé que par les packages installés globalement sans le TREE complet, alors:

npm -g ls --depth=0

ou localement (omettre -g):

npm ls --depth=0


6
Je aime préciser ou --long --L ainsi, npm -g ls --depth=0 --long. Cela fournit les descriptions des modules et les liens github.
— Adam Caviness

si vous aimez npm lsles exemples complets, consultez ceci: stackoverflow.com/questions/17937960/…
— prosti

48

liste de tous les modules tiers installés globalement, écrivez dans la console:

 npm -g ls

28

dans n'importe quel système d'exploitation

npm -g list

et c'est tout


4
Cette commande prendra plus de temps que npm -g ls --depth=0, car elle recherchera également les dépendances de module.
— Paul Razvan Berg

9

En règle générale, il existe deux façons de répertorier les packages installés: via l'interface de ligne de commande ( CLI ) ou dans votre application à l'aide de l' API .

Les deux commandes s'imprimeront sur stdouttoutes les versions des packages installés, ainsi que leurs dépendances, dans une arborescence.


CLI

npm list

Utilisez l' -gindicateur (global) pour lister tous les packages installés globalement. Utilisez l' --depth=0indicateur pour lister uniquement les principaux packages et non leurs dépendances.


API

Dans votre cas, vous souhaitez l'exécuter dans votre script, vous devez donc utiliser l'API. À partir de la documentation:

npm.commands.ls(args, [silent,] callback)

En plus de l'impression vers stdout, les données seront également transmises au rappel.


Merci de préciser que npm dispose d'une API accessible depuis les applications. Comment passez-vous des arguments aux fonctions? J'ai essayé npm.commands.ls(["depth=0"], ... )mais cela me donne une erreur et npm.commands.ls(["prod"], ... )me donne un tableau vide ....
— Giuliano Collacchioni

6

Pourquoi ne pas les saisir de dependenciesdans package.json?

Bien sûr, cela ne vous donnera que ceux que vous avez réellement enregistrés, mais vous devriez le faire de toute façon.

console.log(Object.keys(require('./package.json').dependencies));

Cela ne vous donnera pas les packages installés dans le monde entier
— Owen J Lamb

La question d'origine ne précise pas s'ils veulent ou non inclure les packages installés globalement. Cette réponse offre une alternative utile aux autres réponses.
— Andy Fleming

3
for package in `sudo npm -g ls --depth=0 --parseable`; do
    printf "${package##*/}\n";
done

1
Ouais, tout mon Bash de nos jours a$()
— AT
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.