Auch nach der Installation von npm install -g gulp wurde keine lokale gulp-Installation gefunden

88

Ich habe versucht, gulp by zu installieren

npm install -g gulp

Die Ausgabe scheint ungefähr so ​​zu sein. (Ich habe einige Protokolle übersprungen)

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)

Im obigen Skript sehe ich eine Zeile / usr / bin / gulp -> /usr/lib/node_modules/gulp/bin/gulp.js, die vermutlich einen Simulink im Ordner bin erstellt. Also sollte ich global schlucken, aber ich bekomme diesen Fehler.

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

Irgendeine Idee, warum ich diesen Fehler bekomme.

Vielen Dank

Harikrish
quelle

Antworten:

103

Wie im Dokument erwähnt , sollten Sie es global installieren (Sie haben das getan) und es Ihren Projektentwicklern hinzufügen (lokal):

npm install gulp --save-dev
Verstümmelter Deutz
quelle
1
Gibt es eine Möglichkeit für einen Gulp, Knotendateien nicht in den lokalen Projektordner zu kopieren? Nachdem Gulp global installiert wurde, erstellt dieser Befehl nach meinem Verständnis eine lokale Kopie davon.
Vladislav Rastrusny
Der Punkt ist, dass die lokale Installation garantiert, dass Ihr Projekt-Build NICHT ausgeglichen wird, selbst wenn Ihre Systeminstallationen aktualisiert werden (die globale gulp-Installation ist nur dazu da, einen binären Befehl im Pfad bereitzustellen). Dies ist die gleiche Situation für das Grunzen.
Verstümmelt Deutz
12
Ich hasse auch vollständige Kopien von Knotenmodulen in jedem Projektordner, deshalb verwende ich regelmäßignpm link gulp --save-dev
PA.
1
Schön, aber ich sehe nicht, dass dies npm link gulp --save-devden --save-devParameter respektiert .
Derek Greer
2
@PA, um die Kommentare zu den anderen Antworten noch einmal zu wiederholen, npm link gulpist eine schlechte Idee.
Sfarbota
35

Ich stand vor dem gleichen Problem. Wurde durch Erstellen eines Links behoben

npm link gulp
piscript
quelle
8
Wie in einem anderen Kommentar erwähnt, ist dies eine schlechte Idee. Build-Systeme wie gulp oder grunt sind so konzipiert, dass ein bestimmtes Projekt von einer bestimmten Version des Build-spezifischen abhängen kann (daher wird es unabhängig vom Status oder den installierten Versionen Ihres globalen Systems immer noch erstellt). Der Versuch, die globale und lokale Version von gulp miteinander zu verbinden, schießt sich in den Fuß ...
Mangled Deutz
@MangledDeutz Ich bin nicht daran interessiert, Schluck an dieses spezielle Projekt zu binden. Ich möchte es nur als kleines Befehlszeilentool zum Automatisieren einiger Build-Aufgaben verwenden. Mein gulpfile wird nicht Teil des Git-Repos sein. Wenn ich dieses Repo auf einem anderen Computer klone, entscheide ich mich möglicherweise, nicht einmal gulp zu verwenden, um diese Aufgaben zu automatisieren. Ich verwende möglicherweise ein anderes Tool. Ich möchte so tun, als ob Node und Npm nicht existieren, und Gulp ist nur ein kleines Programm in / usr / bin, das im CWD nach einer gulpfile.js sucht und auf magische Weise funktioniert. Wenn das alles ist, was ich will, ist diese Antwort nicht vernünftig?
Jack M
@JackM es ist immer noch keine vernünftige Sache, denn je nachdem, welche Version von gulp systemweit installiert ist, kann es mit dieser gulpfile.js funktionieren oder auch nicht (und "magisch" bricht ohne Grund) ...
Verstümmelter Deutz
@MangledDeutz Dies gilt jedoch für jedes Befehlszeilenprogramm, das eine Datei als Eingabe akzeptiert.
Jack M
Yaaas! DIES! Lassen Sie den Entwickler entscheiden, wann die globale Version angemessen ist oder nicht !!
Vision Hive
-2

Überprüfen Sie das Verzeichnis /home/username/.npm: Möglicherweise ist Gruppen / Eigentümer von Dateien root. Ändern Sie den Benutzernamen:

chown -R username.username /home/username/.npm
István Pató
quelle
-2

Ich habe kürzlich die Fehlermeldung "Lokaler Schluck nicht gefunden" erhalten. Ich konnte daran vorbeikommen, indem ich einen Symlink vom globalen Verzeichnis node_modules zum lokalen Projektverzeichnis erstellte, in dem sich meine Datei gulpfile.js befindet.

user3791139
quelle
7
Sie vereiteln dann den Zweck eines lokal verfügbaren Build-Systems, das beim Upgrade Ihres Basissystems NICHT kaputt geht. Dies ist sicherlich eine schlechte Idee und widerspricht den Absichten des
Autors