Список рабочих пространств NPM, похожих на lerna ls
Я ищу команду NPM, похожую на
lerna ls
это распечатало бы все рабочие места.
Например, скажем, у меня есть
package1
а также
package2
в
packages
подкаталог и мой package.json выглядит так:
"workspaces": [
"./packages/*"
]
Я хочу получить список рабочих пространств NPM 7. В качестве примера я ожидал:
- пакеты / пакет1
- пакеты / пакет2
Я надеялся
npm ls -p --depth 0
сделал бы это, но, к сожалению, он распечатывает и другие зависимости.
Думаю, я мог бы использовать
npm ls -json
и проанализируйте зависимости верхнего уровня. Однако я надеюсь, что есть способ получше?
4 ответа
Есть новый способnpm@8
:
npm query .workspace | jq -r '.[].location'
Возвращает ожидаемый результат:
packages/package1
packages/package2
Все еще требуетjq
, но немного чище, чем раньше.
Так что пока я использую JQ для этого.
Пример:
npm ls --production --depth 1 -json | jq -r '.dependencies[].resolved'
Для моего примера это приводит к:
file:../../packages/package1
file:../../packages/package2
Я не знаю, почему это добавляет
../../
перед ним. Итак, чтобы еще больше улучшить это:
npm ls --production --depth 1 -json | jq -r '.dependencies[].resolved[11:]'
возвращает ожидаемый результат:
packages/package1
packages/package2
Я также отправил запрос функции здесь: https://github.com/npm/cli/issues/4086 .
На всякий случай, если кто-то ищет чистое решение NodeJS-npm:
npm exec -ws -c 'node -e "console.log(require(\"./package.json\").name)"'