2016-08-26 3 views
0

Я прочитал в документации по npm, что вы не можете использовать бин-скрипты локально установленных пакетов.Как сделать скрипт bin доступным для пакета npm, установленного локально

Итак, как gulp может быть запущен как команда bin при установке локально? Что делает его доступным при локальном использовании, я просмотрел gulppackage.json и сценарии bin, я не нашел ответа.

+0

Пожалуйста, отметьте вопрос, как ответ, если ваша проблема решена. В противном случае сообщите нам, что еще не работает. – Cyril

ответ

0

From NPMJS documentation:

Чтобы использовать эту функцию, поставить поле бен в вашем package.json, который является отображением имени команды для имени локального файла. При установке npm символизирует этот файл в префикс/bin для глобальных установок или ./node_modules/.bin/ для локальной установки.

Таким образом, ваши локально установленные пакеты двоичные файлы будут исполняемыми как этот

./bin/node_modules/.bin/the_binary 

Это если вы хотите запустить бинарный файл напрямую. Или, как указано в the scripts part of the documentation:

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

Таким образом, вы можете просто написать сценарий оболочки, как

scripts: { 
    "build": "the_binary" 
} 

и вызвать ваш сценарий как этот

npm run build 

Bonus

По состоянию на [email protected] .0, вы можете использовать собственные аргументы при выполнении scr ДПБ. Специальный параметр - используется getopt для разграничения конца опций. НПМ будет проходить все аргументы после - непосредственно в скрипт:

npm run test -- --grep="pattern" 
+0

Итак, я не могу установить пакет (например, gulp as) и запустить команду bin без возможности глобальной установки? Причина: Я установил Gulp локально, и я могу запустить команду bin gulp default' без установки 'Gulp' в глобальном масштабе. Проблема может быть в моем bash_profile ... Я не знаю, почему я могу запускать Gulp, но не мою пользовательскую команду bin без глобальной установки, и связанная с ней документация, похоже, говорит, что она абсолютно нормальная. – Jordan

+0

Нет, вы не должны этого делать. Вы можете запустить 'npm list -g', чтобы посмотреть, какие пакеты установлены глобально, и' какой gulp', чтобы увидеть, где находится двоичный файл. – Cyril

+0

Я подтверждаю, проблема была в моем bash_profile ... Большое спасибо за ваше время! – Jordan