Распечатать список всех установленных модулей 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/…
— Андерсон Грин

Ответы:


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

Если вас интересуют только глобально установленные пакеты без полного TREE, тогда:

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флаг (global), чтобы вывести список всех глобально установленных пакетов. Используйте этот --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));

Это не даст вам пакетов, установленных глобально,
— Оуэн Дж. Лэмб,

В исходном вопросе не указано, хотят ли они включать глобально установленные пакеты. Этот ответ представляет собой полезную альтернативу другим ответам.
— Энди Флеминг

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.