Легкий способ перечислить модули node У меня есть npm?
Я ищу команду, в которой будут перечислены имена глобальных модулей, которые у меня есть npm link
'd для локальных копий, а также список локального пути.
Фактически, список всех глобально установленных модулей будет еще лучше, а npm link
'd ones помечен каким-то образом.
Ответы
Ответ 1
Вы пытались просто указать содержимое каталога node_modules
(например, ls -l node_modules | grep ^l
)? Это обычные символические ссылки.
Если вам действительно нужно найти все символические ссылки, вы можете попробовать что-то вроде find / -type d -name "node_modules" 2>/dev/null | xargs -I{} find {} -type l -maxdepth 1 | xargs ls -l
.
Ответ 2
Если вам нужен хороший цветной вывод из npm list
, вам может понравиться:
\ls -F node_modules | sed -n 's/@$//p' | xargs npm ls -g --depth 0
который дает в моей текущей игровой площадке:
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
`-- [email protected]
Он делает несколько предположений, но он должен работать в большинстве случаев или легко адаптироваться к объяснениям ниже.
- используйте
\ls
, чтобы обойти возможные псевдонимы в вашей команде ls
- параметр
-F
добавляет индикатор "@" для ссылок
- команда
sed
выбирает эти ссылки и удаляет индикатор
- часть
xargs
передает предыдущий вывод в качестве аргументов npm ...
-
npm
вызывается с помощью
-
list
или ls
для отображения модулей с версиями
- замените на
ll
, чтобы получить подробную информацию о каждом указанном модуле.
-
-g
для глобальных модулей и
-
--depth 0
для мелкого листинга (необязательно)
-
--long false
(по умолчанию используется "список" ).
Проблема: по какой-либо причине npm дает посторонние записи для меня в данный момент (не окрашенные). Они были бы теми, у кого было "npm unink" ed.
Для "списка всех глобально установленных модулей" в текущем пути npm вы просто выполняете
npm list -g
Для дальнейших нужд вы можете взглянуть на
npm help folders
Вы не можете следовать символическим ссылкам, если вы не сканируете всю свою файловую систему и (тогда это не конкретный вопрос на npm).
Для быстрого поиска файлов и каталогов по имени я использую locate
, который работает с индексом, который восстанавливается обычно один раз в день.
locate '*/node_modules'
и начните работать оттуда (вы можете уточнить поиск с помощью опции --regexp
.
Ответ 3
Лучшей альтернативой синтаксическому анализу ls
является использование find
следующим образом:
find . -type l
Вы можете использовать -maxdepth 1
только для обработки первого уровня каталога:
find . -maxdepth 1 -type l
Вы можете использовать -ls
для получения дополнительной информации.
Например, для нахождения node модулей, связанных с npm:
find node_modules -maxdepth 1 -type l -ls
Здесь статья, почему синтаксический анализ ls
- не самая лучшая идея
Ответ 4
Я нашел этот вопрос после того, как я также написал свой собственный инструмент, здесь он для полноты: npm-list-linked.
Он будет рекурсивно следовать за всеми связанными пакетами в иерархии, а в моей работе мы иногда можем иметь npm link
2-3 уровня, и таким образом вы можете точно видеть, какие локальные и какие нет, избегает сюрпризов.
$ npm-list-linked
Linked packages in /home/user/projects/some-project/
@prefix/package 0.2.7
other-package 0.1.2
Ответ 5
Я вижу, что я и другие очень похожи на этот вопрос. Я написал небольшой CLI для себя под названием link-status
, чтобы отобразить эту информацию, это может помочь другим! Проверьте здесь!
Ответ 6
Я создал модуль Node.js, который использует fs
для проверки символических ссылок, сделанных npm link
или иначе.
https://www.npmjs.com/package/symlinked
var symlinked = require("symlinked")
console.log(symlinked.names())