2013-09-25 4 views
1

Может кто-нибудь объяснить мне разницу между командой npm bin -g и командой npm bin?Node.js: команда npm bin -g

Практически, когда я печатаю npm bin Я получаю c:\wamp\www\node\node_modules\.bin.

Когда я печатаю npm bin -g (что должно означать «глобальное»), я получаю c:\users\shmuli\appdata\roaming\npm.

Я предполагаю, что «глобальный» означает, что я могу запустить свою программу в cmd, не будучи в определенном каталоге, который он установлен ... Существуют ли в глобальных установках другой каталог установки, чем обычные установки?

Это то, что происходит здесь?

ответ

1

Глобальная установка означает, что модуль установлен в глобальную папку, доступную из сценария, запущенного из любого каталога.

Помимо наличия другого каталога, глобальная установка установит для модуля man страниц, а также добавит переменную PATH для модуля. Вот почему, когда модули имеют интерфейсы командной строки, вам обычно рекомендуется использовать -g при его установке.

Например, если вы используете скрипт из /path, и у вас есть модуль с именем foo установлен локально в эту папку, вы можете использовать require('foo') только тогда, когда внутри /path. Но если вы установили foo глобально, вы можете использовать require('foo') из сценария Node в любой точке вашей файловой системы, потому что глобальная папка модуля всегда проверяется.

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


Что касается самой фактической npm bin команды, он печатает путь, что менеджер пакетов будет устанавливать модули. Если вы передаете флаг -g, он печатает путь, к которому установлены глобальные модули.

+0

Еще раз спасибо hex! Сегодня вы были очень полезны! :) – shmuli

Смежные вопросы