Подтвердить что ты не робот

Легкий способ перечислить модули node У меня есть npm?

Я ищу команду, в которой будут перечислены имена глобальных модулей, которые у меня есть npm link 'd для локальных копий, а также список локального пути.

Фактически, список всех глобально установленных модулей будет еще лучше, а npm link 'd ones помечен каким-то образом.

4b9b3361

Ответ 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())