Imprima una lista de todos los módulos node.js instalados


134

En un script node.js en el que estoy trabajando, quiero imprimir todos los módulos node.js (instalados usando npm) en la línea de comando. ¿Cómo puedo hacer esto?

console.log(__filename);

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

En este caso, puede ser útil escribir una función que devuelva la ruta de la carpeta de módulos node.js (si es posible). Una solución multiplataforma sería ideal.
— Anderson Green

Información sobre cómo obtener la lista de archivos de un directorio: stackoverflow.com/questions/2727167/…
— Anderson Green

Respuestas:


100

Use npm ls (incluso hay salida json)

Del guión:

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);

correr:

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

Además, ¿cómo puede obtener la ruta del archivo de la carpeta de módulos?
— Anderson Green

la ruta sería node_modules / [nombre del módulo]. Creo que esto debería funcionar en todas las plataformas. Tenga en cuenta que de esta manera solo se imprime el árbol de módulos 'locales', y requremira primero a node_modules, luego ../node_modules, ../../node_modules (vea nodejs.org/api/… ) y luego desde NODE_PATH env var
— Andrey Sidorov

44
tratar npm ls --parseablepor sólo lista de rutas
— Andrey Sidorov

262

Si solo está interesado en los paquetes instalados globalmente sin el TREE completo, entonces:

npm -g ls --depth=0

o localmente (omitir -g):

npm ls --depth=0


66
Me gusta especificando -L o --long así, npm -g ls --depth=0 --long. Esto proporciona las descripciones del módulo y los enlaces de github.
— Adam Caviness

si te gustan npm lslos ejemplos completos
— mira

48

lista de todos los módulos de terceros instalados globalmente, escriba en la consola:

 npm -g ls


9

En general, hay dos formas de enumerar los paquetes instalados: a través de la interfaz de línea de comandos ( CLI ) o en su aplicación utilizando la API .

Ambos comandos se imprimirán en stdouttodas las versiones de los paquetes instalados, así como sus dependencias, en una estructura de árbol.


CLI

npm list

Use el -gindicador (global) para enumerar todos los paquetes instalados globalmente. Use la --depth=0bandera para enumerar solo los paquetes principales y no sus dependencias.


API

En su caso, desea ejecutar esto dentro de su script, por lo que necesitaría usar la API. De los documentos:

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

Además de imprimir en stdout, los datos también se pasarán a la devolución de llamada.


Gracias por especificar que npm tiene una API accesible desde las aplicaciones. ¿Cómo pasas argumentos a las funciones? Lo intenté npm.commands.ls(["depth=0"], ... )pero me da un error y npm.commands.ls(["prod"], ... )me da una matriz vacía ...
— Giuliano Collacchioni

6

¿Por qué no agarrarlos desde dependenciesadentro?package.json ?

Por supuesto, esto solo le dará los que realmente guardó, pero debería hacerlo de todos modos.

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

Eso no le dará paquetes instalados globalmente
— Owen J Lamb

La pregunta original no especifica si quieren o no incluir paquetes instalados globalmente. Esta respuesta proporciona una alternativa útil a las otras respuestas.
— Andy Fleming

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

1
Sí, todo mi Bash hoy en día tiene$()
— EN
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.