Как узнать, установлен ли пакет npm глобально или локально?

154

Я устанавливаю grunt, node, npm, bower и grunt-cli на windows7.

В инструкциях сказано, что я должен запустить команды установки с флагом -g для global.

Как я могу проверить, использовал ли я флаг -g при установке. Это займет много времени, чтобы удалить их и переустановить.

AndraeRay
источник

Ответы:

220

Используйте listкоманду с -gфлагом, чтобы увидеть все пакеты, которые установлены глобально:

npm list -g

Чтобы проверить, установлен ли определенный пакет глобально, вы можете указать имя пакета ( gruntв данном случае), как показано ниже:

npm list -g grunt

Или вы можете использовать grepдля фильтрации по именам пакетов:

npm list -g | grep grunt

Источник: https://docs.npmjs.com/cli/ls

Мунтазер Ахмед
источник
4
Для логического "установлено или нет?" проверьте, попробуйте использовать --depth. Например: npm list --depth 1 --global csats-mturk > /dev/null 2>&1. Вот более подробный пример .
Адам Монсен
2
@AdamMonsen, я искал установку высшего уровня крачек. Я имел обыкновение npm list --depth 0 --global ternпроверять, была ли крачка установлена ​​глобально, как будтоnpm install -g tern
Sudhi
grepкажется довольно надежным решением, учитывая комментарии о выходе npm с ошибкой из-за неудовлетворенных зависимостей
myol
31
npm list --depth 1 --global packagename > /dev/null 2>&1

Затем вы можете проверить состояние выхода, чтобы увидеть, установлен он или нет. Спасибо Адам Монсен .

Флимм
источник
3
спасибо за --depth 1! это то, что я искал. На самом деле я использую сейчасnpm list --depth 0 -g
наслаждайтесь
По какой-то причине $?всегда возвращается 1за мной, даже если пакет установлен или НЕ установлен.
Кэти
4
ВНИМАНИЕ: npm всегда будет завершаться с ошибкой, если какой-либо из ваших пакетов имеет неудовлетворенные зависимости, даже если пакет установлен . @Kayvar, поэтому npm возвращает 1 для вас.
Codebling
17

Чтобы проверить, установлен ли определенный пакет глобально, выполните:

npm list -g [package-name]

Давайте возьмем «хрюканье» в качестве примера. Если он установлен глобально, вы должны увидеть что-то вроде этого

C:\data\tryout\test1>npm list -g grunt
C:\Users\xxxxxxx\AppData\Roaming\npm
└── grunt@0.4.5

Если он не установлен глобально, вы должны увидеть что-то вроде этого

C:\data\tryout\test1>npm list -g grunt
C:\Users\xxxxxxx\AppData\Roaming\npm
└── (empty)

Чтобы проверить, установлен ли конкретный пакет локально, вы можете выполнить те же команды, что и выше, но без параметра -g.

source: Как проверить, был ли пакет npm установлен глобально или локально .

mvermand
источник
6

Вы можете перечислить все глобальные пакеты с помощью команды:

npm ls -g

Или проверьте наличие определенного пакета с:

npm ls -g [package-name] 

Например: npm ls -g @angular/cli

Mwiza
источник
1

В Windows мы используем следующую команду, чтобы узнать, установлен пакет или нет. Пожалуйста, обратитесь к изображению для деталей.

npm list -g | find "create"

результат выборки

SHARATH P
источник
0

Из вашего пакета с sindresorhus/is-installed-globally

https://github.com/sindresorhus/is-installed-globally

Использование:

const isInstalledGlobally = require('is-installed-globally');

// With `npm install your-package`
console.log(isInstalledGlobally);
//=> false

// With `npm install --global your-package`
console.log(isInstalledGlobally);
//=> true

Я нашел это полезным, когда мне приходилось распространять предварительно собранные файлы с моим пакетом: Как опубликовать пакет npm с дистрибутивными файлами? С помощью этого пакета я могу проверить, является ли установка локальной или глобальной, а затем использовать относительные пути для локальных установок, как показано здесь .

Сиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
источник