Локально установлены по сравнению с глобально установленными модулями NPM
В моем файле package.json у меня есть указатель в качестве зависимости. После запуска npm install bower устанавливается локально. Когда я пытаюсь запустить bower после его установки локально, я получаю ошибку
"bower" is not recognized as an internal or external command."
Кажется, единственный способ разрешить это - установить сервер в глобальном масштабе. Зачем мне это делать? Если в моем проекте содержится локальная копия bower, почему wont node использовать его?
Запуск окон 7
Ответы
Ответ 1
Установка локально делает доступным для текущего проекта колокольчик (где он хранит все модули node в node_modules
). Обычно это полезно только для использования такого модуля var module = require('module');
Он не будет доступен как команда , которую оболочка может разрешить, пока вы не установите ее глобально npm install -g module
, где npm будет устанавливать ее в место где ваша переменная пути разрешит эту команду .
Изменить: Эта документация объясняет это довольно подробно.
Ответ 2
Вы можете выполнить свой локальный экземпляр, введя строку ниже в cmd:
node_modules/bower/bin/bower <bower args>
Ответ 3
Обычно вы устанавливаете модули NPM глобально, если хотите, чтобы они были включены в ваш путь для запуска из командной строки. Поскольку он локально установлен, вам придется запустить его из папки node_modules
.
Ответ 4
Мы используем PHP и JavaScript, поэтому у нас есть композитор и npm.
Каждый из проектов, над которыми мы работаем, имеет разные пакеты как для времени исполнения пакета, так и для инструментов build/dev.
Поскольку в каждом проекте существуют ограничения по версии, установка глобальной версии пакета x (которая будет запущена из командной строки), вызвала бы у нас проблемы, мы устанавливаем все инструменты в каждом пакете. Гораздо проще определить в соответствующих файлах composer.json/package.json.
Но запуск инструментов CLI - это боль, если вам нужно постоянно добавлять дополнительный путь к команде.
С этой целью мы рекомендуем команде, чтобы следующие пути были добавлены в ваш $PATH
в соответствующем .bashrc(или эквиваленте):
./vendor/bin:./node_modules/.bin
(EDIT: для Windows пути будут .\vendor\bin;.\node_modules\.bin;
)
Итак, хотя в проекте X у нас есть доступ к инструментам CLI для этого проекта. Переключитесь на проект Y, и мы получим инструменты для проектов.
Конечно, вы собираетесь получать дубликаты, но каждый проект поддерживается разными командами (а некоторые из них находятся в нескольких командах), так что опять-таки наличие одной версии в глобальной установке является проблемой.