Wydrukuj listę wszystkich zainstalowanych modułów node.js.


134

W skrypcie node.js, nad którym pracuję, chcę wydrukować wszystkie moduły node.js (zainstalowane przy użyciu npm) do wiersza poleceń. W jaki sposób mogę to zrobić?

console.log(__filename);

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

W takim przypadku przydatne może być napisanie funkcji zwracającej ścieżkę do folderu modułów node.js (jeśli jest to możliwe). Idealne byłoby rozwiązanie wieloplatformowe.
— Anderson Green

Informacje o pobraniu listy plików z katalogu: stackoverflow.com/questions/2727167/…
— Anderson Green

Odpowiedzi:


100

Użyj npm ls (jest nawet wyjście json)

Ze scenariusza:

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

biegać:

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

Ponadto, w jaki sposób można uzyskać ścieżkę do pliku folderu modułów?
— Anderson Green

ścieżka to node_modules / [nazwa modułu]. Uważam, że powinno to działać na wszystkich platformach. Zwróć uwagę, że w ten sposób wypisywane jest tylko drzewo modułów „lokalnych” i requrepatrzy najpierw na node_modules, potem ../node_modules, ../../node_modules (zobacz nodejs.org/api/… ), a następnie z NODE_PATH env var
— Andrey Sidorov

4
spróbuj npm ls --parseabletylko listy ścieżek
— Andrey Sidorov

262

Jeśli interesują Cię tylko pakiety zainstalowane globalnie bez pełnego DRZEWA, to:

npm -g ls --depth=0

lub lokalnie (pomiń -g):

npm ls --depth=0


6
I jak określenie --l lub --long jak dobrze npm -g ls --depth=0 --long. Zawiera opisy modułów i linki do githubów.
— Adam Caviness

jeśli lubisz npm lspełne przykłady, sprawdź to: stackoverflow.com/questions/17937960/…
— prosti

48

lista wszystkich globalnie zainstalowanych modułów firm trzecich, napisz w konsoli:

 npm -g ls


9

Ogólnie rzecz biorąc, istnieją dwa sposoby wyświetlania listy zainstalowanych pakietów - za pośrednictwem interfejsu wiersza poleceń ( CLI ) lub w aplikacji za pomocą interfejsu API .

Oba polecenia będą drukować na stdoutwszystkich wersjach zainstalowanych pakietów, a także na ich zależnościach w strukturze drzewa.


CLI

npm list

Użyj -gflagi (globalnej), aby wyświetlić listę wszystkich pakietów zainstalowanych globalnie. Użyj --depth=0flagi, aby wyświetlić tylko najpopularniejsze pakiety, a nie ich zależności.


API

W twoim przypadku chcesz to uruchomić w swoim skrypcie, więc musisz użyć API. Z dokumentów:

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

Oprócz drukowania do stdout, dane zostaną również przekazane do wywołania zwrotnego.


Dziękujemy za określenie, że npm ma API dostępne z poziomu aplikacji. W jaki sposób przekazujesz argumenty do funkcji? Próbowałem, npm.commands.ls(["depth=0"], ... )ale daje mi to błąd i npm.commands.ls(["prod"], ... )daje mi pustą tablicę ....
— Giuliano Collacchioni

6

Dlaczego nie złapał ich dependenciesw package.json?

Oczywiście da ci to tylko te, które faktycznie uratowałeś, ale i tak powinieneś to zrobić.

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

To nie da ci pakietów zainstalowanych na całym świecie
— Owen J Lamb

Pierwotne pytanie nie określa, czy chcą uwzględnić globalnie zainstalowane pakiety. Ta odpowiedź stanowi pomocną alternatywę dla innych odpowiedzi.
— Andy Fleming

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

1
Tak, wszystkie moje Bash w dzisiejszych czasach$()
— AT
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.