Как изменить формат вывода npm ll? - PullRequest
0 голосов
/ 04 марта 2019

Мне нужно предоставить моему клиенту все зависимости наших проектов (имя библиотеки + URL-адрес github / npm).Я могу сделать это легко, просто npm ll внутри каждого проекта.Но это дает мне древовидную структуру.Есть ли способ изменить этот вывод на таблицу?

Я прочитал документацию по команде npm ll и ничего не нашел.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Если ничего не помогает, вы можете извлечь то, что вам нужно, используя jq :

npm ll --json | jq -r 'recurse(.dependencies[]) | [.name, .version, .repository.url?] | @csv'

Пример вывода:

"express","4.16.4","git+https://github.com/expressjs/express.git"
"accepts","1.3.5","git+https://github.com/jshttp/accepts.git"
"mime-types","2.1.22","git+https://github.com/jshttp/mime-types.git"
"mime-db","1.38.0","git+https://github.com/jshttp/mime-db.git"
"negotiator","0.6.1","git+https://github.com/jshttp/negotiator.git"
0 голосов
/ 04 марта 2019

Не уверен, что он полностью отвечает на вопрос, но вы всегда можете переделать вывод в нечто более управляемое - например, скрипт, такой как:

#!/bin/bash
# list packages and remove tree structure prefix + "deduped" suffix (keep only module@version)
data=($(npm ls | sed 's/^[┬├│─└ ]*//g' | sed 's/deduped$//g'))
for module in ${data[*]}
do
  # split on @ only when it separates module and version
  # (not the @ prefix on @username/module@version)
  split=($(echo $module | sed -r 's/^(.+)@/\1 /'))
  # an example display
  printf "%-30s%10s https://www.npmjs.org/packages/%s\n" ${split[0]} ${split[1]} ${split[0]}
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...