Локальная установка gulp не найдена даже после установки npm install -g gulp

88

Я пытался установить gulp

npm install -g gulp

Результат выглядит примерно так. (я пропустил несколько журналов)

npm http 304 https://registry.npmjs.org/string_decoder
npm http 304 https://registry.npmjs.org/lodash._htmlescapes
/usr/bin/gulp -> /usr/lib/node_modules/gulp/bin/gulp.js
gulp@3.6.2 /usr/lib/node_modules/gulp
├── tildify@0.2.0
├── pretty-hrtime@0.2.1
├── deprecated@0.0.1
├── archy@0.0.2
├── semver@2.2.1
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
├── orchestrator@0.3.3 (sequencify@0.0.7)
├── liftoff@0.9.8 (extend@1.2.1, minimist@0.0.8, resolve@0.6.3, findup-sync@0.1.3)
├── vinyl-fs@0.1.4 (graceful-fs@2.0.3, map-stream@0.1.0, mkdirp@0.3.5, vinyl@0.2.3, glob-stream@3.1.9, glob-watcher@0.0.6)
└── gulp-util@2.2.14 (lodash._reinterpolate@2.4.1, dateformat@1.0.7-1.2.3, minimist@0.0.8, vinyl@0.2.3, multipipe@0.0.2, through2@0.4.1, lodash.template@2.4.1)

В приведенном выше сценарии я вижу строку / usr / bin / gulp -> /usr/lib/node_modules/gulp/bin/gulp.js, которая, как мне кажется, создает simulink в папке bin. Итак, я должен получать глоток глобально, но получаю эту ошибку.

No local gulp install found in /var/www/ksapp

Любая идея, почему я получаю эту ошибку.

Благодарность

харикриш
источник

Ответы:

103

Как указано в документе , вы должны установить его глобально (вы это сделали) и добавить в свои разработки проекта (локально):

npm install gulp --save-dev
Искалеченный Deutz
источник
1
Есть ли возможность Gulp не копировать файлы узлов в локальную папку проекта? Если Gulp установлен глобально, эта команда делает его локальную копию, насколько я понимаю.
Владислав Раструсный
Дело в том, что локальная установка гарантирует, что сборка вашего проекта НЕ сломается, даже если установка вашей системы будет обновлена ​​(глобальная установка gulp предназначена только для предоставления двоичной команды в пути). То же самое и с ворчанием.
Mangled Deutz
12
Я тоже ненавижу полные копии узловых модулей в каждой папке проекта, поэтому регулярно используюnpm link gulp --save-dev
PA.
1
Хорошо, но я не вижу, что это npm link gulp --save-devкасается --save-devпараметра.
Дерек Грир
2
@PA, чтобы еще раз повторить комментарии к другим ответам, npm link gulp- плохая идея.
sfarbota
35

Я столкнулся с той же проблемой. Решил, создав ссылку

npm link gulp
писанина
источник
8
Как сказано в другом комментарии, это плохая идея. Системы сборки, такие как gulp или grunt, спроектированы таким образом, что конкретный проект может зависеть от конкретной версии конкретной сборки (таким образом, сборка будет продолжаться независимо от состояния или установленных версий вашей глобальной системы). Попытка связать глобальную и локальную версии gulp - это выстрелить себе в ногу ...
Mangled Deutz
@MangledDeutz Я не заинтересован в привязке gulp к этому конкретному проекту. Я просто хочу использовать его как небольшой инструмент командной строки для автоматизации некоторых задач сборки. Мой gulpfile не будет частью репозитория git, и на самом деле, если я клонирую это репо на другом компьютере, я могу решить даже не использовать gulp для автоматизации этих задач, я могу использовать другой инструмент. Я хочу представить, что node и npm не существуют, а gulp - это всего лишь небольшая программа в / usr / bin, которая ищет gulpfile.js в CWD и волшебным образом работает. Если это все, что я хочу, разве это не разумный ответ?
Jack M
@JackM это все еще не разумная вещь, потому что в зависимости от того, какая версия gulp установлена ​​в системе, она может работать или не работать с этим gulpfile.js (и «волшебным образом» ломается без причины) ...
Mangled Deutz
@MangledDeutz Но это верно для любой программы командной строки, которая принимает файл в качестве входных данных.
Jack M
Yaaas! ЭТОТ! Пусть разработчик решит, когда глобальная версия подходит или нет !!
Питер Конга-Камау
-2

Проверьте каталог /home/username/.npm: возможно, группы / владелец файлов - root. Изменить на имя пользователя:

chown -R username.username /home/username/.npm
Иштван Пато
источник
-2

Недавно я столкнулся с сообщением об ошибке «Локальный глоток не найден». Мне удалось обойти это, создав символическую ссылку из глобального каталога node_modules в локальный каталог проекта, где находится мой gulpfile.js.

user3791139
источник
7
Затем вы побеждаете цель локально доступной системы сборки, которая НЕ ломается при обновлении вашей базовой системы. Это определенно плохая идея и идет вразрез с намерениями авторов ...
Mangled Deutz