Роздрукуйте список усіх встановлених модулів node.js


134

У сценарії node.js, над яким я працюю, я хочу надрукувати всі командні node.js (встановлені за допомогою npm) у командному рядку. Як я можу це зробити?

console.log(__filename);

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

У цьому випадку може бути корисно написати функцію, яка повертає шлях до папки модулів node.js (якщо це можливо). Рішення на платформі було б ідеальним.
— Андерсон Грін

Інформація про отримання списку файлів із каталогу: stackoverflow.com/questions/2727167/…
— Anderson Green

Відповіді:


100

Використовуйте npm ls (є навіть вихід json)

Зі сценарію:

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

запустити:

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

Крім того, як можна отримати шлях до файлу папки модулів?
— Андерсон Грін

шлях буде node_modules / [назва модуля]. Я вважаю, що це має працювати на всіх платформах. Зауважте, що таким чином друкується лише "локальне" модулі, і воно requreспочатку дивиться на node_modules, потім ../node_modules, ../../node_modules (див. Nodejs.org/api/… ), а потім від NODE_PATH env var
— Andrey Сидоров

4
спробуйте npm ls --parseableлише список шляхів
— Андрій Сидоров

262

Якщо вас цікавлять лише пакети, встановлені в усьому світі без повного ДРУГА, тоді:

npm -g ls --depth=0

або локально (опустити -g):

npm ls --depth=0


6
Мені подобається вказувати --l або --long, також npm -g ls --depth=0 --long. Це забезпечує описи модулів та посилання github.
— Адам Порожня

якщо ви любите npm lsповні приклади перевірити це: stackoverflow.com/questions/17937960 / ...
— PrOSTi

48

список усіх встановлених у світі модулів сторонніх розробників, запишіть у консоль:

 npm -g ls


9

Як правило, існує два способи списку встановлених пакетів - через інтерфейс командного рядка ( CLI ) або у вашій програмі за допомогою API .

Обидві команди будуть друкувати stdoutвсі версії пакетів, які встановлені, а також їх залежності, у деревній структурі.


CLI

npm list

Використовуйте -gпрапор (глобальний), щоб перелічити всі встановлені глобально пакети. Використовуйте --depth=0прапор, щоб перелічити лише основні пакети, а не їх залежності.


API

У вашому випадку ви хочете запустити це у своєму сценарії, тому вам потрібно буде використовувати API. З документів:

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

Крім друку до stdoutданих, дані також передаватимуться у зворотний дзвінок.


Дякуємо, що вказали, що npm має API, доступний для додатків. Як ви передаєте аргументи функціям? Я спробував, npm.commands.ls(["depth=0"], ... )але це дає мені помилку і npm.commands.ls(["prod"], ... )дає мені порожній масив ....
— Джуліано Колакчіоні

6

Чому б не взяти їх dependenciesв package.json?

Звичайно, це дасть тобі лише ті, що ти насправді врятував, але ти все одно повинен робити це.

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

Це не дасть вам пакетів, встановлених у всьому світі
— Owen J Lamb

Первісне запитання не визначає, хочуть вони включити глобально встановлені пакети. Ця відповідь є корисною альтернативою іншим відповідям.
— Енді Флемінг

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

1
Так, всі мої Bash має тепер$()
— AT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.