Imprimir uma lista de todos os módulos node.js instalados


134

Em um script node.js em que estou trabalhando, desejo imprimir todos os módulos node.js. (instalados usando o npm) na linha de comando. Como posso fazer isso?

console.log(__filename);

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

Nesse caso, pode ser útil escrever uma função que retorne o caminho da pasta modules.js (se isso for possível). Uma solução multiplataforma seria ideal.
Anderson Green

Informações sobre como obter a lista de arquivos de um diretório: stackoverflow.com/questions/2727167/…
Anderson Green

Respostas:


100

Usar npm ls (até a saída json)

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

corre:

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

Além disso, como você pode obter o caminho do arquivo da pasta modules?
Anderson Green

caminho seria node_modules / [nome do módulo]. Eu acredito que isso deve funcionar em todas as plataformas. Observe que dessa maneira apenas a árvore de módulos 'locais' é impressa e requreolha primeiro para node_modules, depois ../node_modules, ../../node_modules (consulte nodejs.org/api/… ) e depois para NODE_PATH env var
Andrey Sidorov

4
tente npm ls --parseableapenas a lista de caminhos
Andrey Sidorov

262

Se você está interessado apenas nos pacotes instalados globalmente sem a ÁRVORE completa, então:

npm -g ls --depth=0

ou localmente (omitir -g):

npm ls --depth=0


6
Eu gosto de especificar --l ou --longo também npm -g ls --depth=0 --long,. Isso fornece as descrições dos módulos e os links do github.
Adam Caviness

se você gosta de npm lsexemplos completos, verifique isso: stackoverflow.com/questions/17937960/…
prosti

48

lista de todos os módulos de terceiros instalados globalmente, escreva no console:

 npm -g ls

28

em qualquer sistema operacional

npm -g list

e é isso


4
Esse comando levará mais tempo que npm -g ls --depth=0, porque também procurará dependências do módulo.
Paul Razvan Berg

9

Geralmente, existem duas maneiras de listar os pacotes instalados - por meio da interface da linha de comandos ( CLI ) ou em seu aplicativo usando a API .

Ambos os comandos serão impressos em stdouttodas as versões dos pacotes instalados, bem como em suas dependências, em uma estrutura em árvore.


CLI

npm list

Use o -gsinalizador (global) para listar todos os pacotes instalados globalmente. Use o --depth=0sinalizador para listar apenas os principais pacotes e não suas dependências.


API

No seu caso, você deseja executar isso em seu script, portanto, você precisará usar a API. Dos documentos:

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

Além de imprimir em stdout, os dados também serão passados ​​para o retorno de chamada.


Obrigado por especificar que o npm tem uma API acessível a partir de aplicativos. Como você passa argumentos para as funções? Eu tentei, npm.commands.ls(["depth=0"], ... )mas ele me dá erro e npm.commands.ls(["prod"], ... )me dá uma matriz vazia ....
Giuliano Collacchioni 01/07

6

Por que não pegá-los de dependenciesdentropackage.json ?

Obviamente, isso fornecerá apenas os que você realmente salvou, mas você deve fazer isso de qualquer maneira.

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

Isso não lhe dará pacotes instalados globalmente
Owen J Lamb

A pergunta original não especifica se eles desejam ou não incluir pacotes instalados globalmente. Esta resposta fornece uma alternativa útil para as outras respostas.
Andy Fleming

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

1
Sim, toda a minha Bash tem hoje em dia$()
AT
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.