Nie znaleziono lokalnej instalacji gulp nawet po zainstalowaniu npm install -g gulp

88

Próbowałem zainstalować łyka wg

npm install -g gulp

Wynik wydaje się być podobny do tego. (Pominąłem niektóre dzienniki)

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)

W powyższym skrypcie widzę linię / usr / bin / gulp -> /usr/lib/node_modules/gulp/bin/gulp.js, która, jak sądzę, tworzy simulink w folderze bin. Więc powinienem dostać łyk na całym świecie, ale pojawia się ten błąd.

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

Każdy pomysł, dlaczego otrzymuję ten błąd.

Dzięki

harikrish
źródło

Odpowiedzi:

103

Jak wskazano w dokumencie , powinieneś zainstalować go globalnie (zrobiłeś to) i dodać go do swojego projektu deweloperskiego (lokalnie):

npm install gulp --save-dev
Mangled Deutz
źródło
1
Czy istnieje możliwość, aby Gulp nie kopiował plików węzłów do lokalnego folderu projektu? Po zainstalowaniu Gulp na całym świecie to polecenie tworzy lokalną kopię tego, co rozumiem.
Vladislav Rastrusny
Chodzi o to, że instalacja lokalna gwarantuje, że kompilacja projektu NIE zepsuje się, nawet jeśli instalacje systemu zostaną zaktualizowane (globalna instalacja gulp jest po to, aby zapewnić binarne polecenie w ścieżce). Taka sama sytuacja występuje w przypadku chrząknięcia.
Mangled Deutz
12
Ja też nienawidzę pełnych kopii modułów węzłów w każdym folderze projektu, więc regularnie używamnpm link gulp --save-dev
PA.
1
Fajnie, ale nie widzę, że npm link gulp --save-devszanuje --save-devparametr.
Derek Greer
2
@PA, aby ponownie powtórzyć komentarze do innych odpowiedzi, npm link gulpto zły pomysł.
sfarbota
35

Miałem ten sam problem. Rozwiązałem to, tworząc łącze

npm link gulp
piscript
źródło
8
Jak stwierdzono w innym komentarzu, to zły pomysł. Systemy kompilacji, takie jak gulp lub grunt, są zaprojektowane w taki sposób, że określony projekt może zależeć od konkretnej wersji konkretnej kompilacji (w ten sposób nadal będą budować bez względu na stan lub zainstalowane wersje twojego globalnego systemu). Próba połączenia globalnej i lokalnej wersji łyka to strzelenie sobie w stopę ...
Mangled Deutz
@MangledDeutz Nie jestem zainteresowany wiązaniem łyka z tym konkretnym projektem. Chcę go po prostu użyć jako małego narzędzia wiersza poleceń do automatyzacji niektórych zadań kompilacji. Mój plik gulpfile nie będzie częścią repozytorium git, a jeśli sklonuję to repozytorium na innym komputerze, mógłbym zdecydować, że nie będę nawet używał gulp do automatyzacji tych zadań, mogę użyć innego narzędzia. Chcę udawać, że węzeł i npm nie istnieją, a gulp to tylko mały program w / usr / bin, który szuka pliku gulpfile.js w CWD i magicznie działa. Jeśli tylko tego chcę, czy ta odpowiedź nie jest rozsądną rzeczą do zrobienia?
Jack M
@JackM to nadal nie jest rozsądna rzecz, ponieważ w zależności od tego, która wersja gulp jest zainstalowana w całym systemie, może, ale nie musi, działać z tym plikiem gulpfile.js (i "magicznie" pęka bez powodu) ...
Mangled Deutz
@MangledDeutz Ale to prawda dla każdego programu wiersza poleceń, który akceptuje plik jako dane wejściowe.
Jack M
Yaaas! TO! Pozwól programistom zdecydować, czy wersja globalna jest odpowiednia, czy nie !!
Peter Konga-Kamau,
-2

Sprawdź katalog /home/username/.npm: może grupy / właściciel plików to root. Zmień na nazwę użytkownika:

chown -R username.username /home/username/.npm
István Pató
źródło
-2

Niedawno pojawił się komunikat o błędzie „Nie znaleziono lokalnego łyka”. Udało mi się to obejść, tworząc dowiązanie symboliczne z globalnego katalogu node_modules do lokalnego katalogu projektu, w którym znajduje się mój plik gulpfile.js.

user3791139
źródło
7
W ten sposób pokonujesz cel, jakim jest lokalnie dostępny system kompilacji, który NIE psuje się podczas aktualizacji systemu podstawowego. To z pewnością zły pomysł i jest sprzeczny z intencjami autorów ...
Mangled Deutz