Aucune installation locale de gulp trouvée même après l'installation de npm install -g gulp

88

J'ai essayé d'installer gulp par

npm install -g gulp

La sortie semble être quelque chose comme ça. (j'ai sauté quelques journaux)

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)

Dans le script ci-dessus, je peux voir une ligne / usr / bin / gulp -> /usr/lib/node_modules/gulp/bin/gulp.js qui, je suppose, crée un lien simulink dans le dossier bin. Donc, je devrais être goulé dans le monde entier, mais j'obtiens cette erreur.

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

Toute idée pourquoi j'obtiens cette erreur.

Merci

harikrish
la source

Réponses:

103

Comme indiqué dans le document , vous devez l'installer globalement (vous l'avez fait) et l' ajouter à votre projet dev deps (localement):

npm install gulp --save-dev
Mangled Deutz
la source
1
Y a-t-il une possibilité pour un Gulp de ne pas copier les fichiers de nœud dans le dossier local du projet? Après avoir installé Gulp globalement, cette commande en fait une copie locale si je comprends bien.
Vladislav Rastrusny
Le fait est que l'installation locale garantit que la construction de votre projet ne fonctionnera PAS même si les installations de votre système sont mises à niveau (l'installation globale de gulp est juste là pour fournir une commande binaire dans le chemin). C'est la même situation pour Grunt.
Mangled Deutz
12
Moi aussi, je déteste les copies complètes des modules de nœuds dans chaque dossier de projet, alors j'utilise régulièrementnpm link gulp --save-dev
PA.
1
Bien, mais je ne vois pas que cela npm link gulp --save-devrespecte le --save-devparamètre.
Derek Greer
2
@PA, pour réitérer à nouveau les commentaires sur les autres réponses, npm link gulpest une mauvaise idée.
sfarbota
35

J'ai fait face au même problème. Je l'ai résolu en créant un lien

npm link gulp
piscript
la source
8
Comme indiqué dans un autre commentaire, c'est une mauvaise idée. Les systèmes de build comme gulp ou grunt sont conçus de manière à ce qu'un projet spécifique puisse dépendre d'une version spécifique de la build spécifique (ainsi, ils seront toujours construits quel que soit l'état ou les versions installées de votre système global). Essayer de relier la version mondiale et locale de gulp, c'est se tirer une balle dans le pied ...
Mangled Deutz
@MangledDeutz Je ne suis pas intéressé à lier gulp à ce projet spécifique. Je veux juste l'utiliser comme un petit outil de ligne de commande pour automatiser certaines tâches de construction. Mon gulpfile ne fera pas partie du repo git, et en fait, si je clone ce repo sur un autre ordinateur, je pourrais même décider de ne pas utiliser gulp pour automatiser ces tâches, je pourrais utiliser un outil différent. Je veux prétendre que node et npm n'existent pas, et gulp est juste un petit programme dans / usr / bin qui recherche un gulpfile.js dans le CWD et fonctionne comme par magie. Si c'est tout ce que je veux, cette réponse n'est-elle pas une chose raisonnable à faire?
Jack M
@JackM ce n'est toujours pas une chose raisonnable, car en fonction de la version de gulp installée à l'échelle du système, il peut ou non fonctionner avec ce gulpfile.js (et "par magie" se brise sans raison) ...
Mangled Deutz
@MangledDeutz Mais c'est vrai pour tout programme de ligne de commande qui accepte un fichier en entrée.
Jack M
Yaaas! CE! Laissez le développeur décider si la version globale est appropriée ou non !!
Peter Konga-Kamau
-2

Vérifiez le répertoire /home/username/.npm: peut-être que les groupes / le propriétaire des fichiers est root. Changer de nom d'utilisateur:

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

J'ai récemment rencontré le message d'erreur "Local gulp not found". J'ai pu contourner cela en créant un lien symbolique à partir du répertoire global node_modules vers le répertoire de projet local où se trouve mon gulpfile.js.

utilisateur3791139
la source
7
Vous êtes alors en train de vaincre l'objectif d'un système de construction disponible localement qui ne se brise PAS lorsque vous mettez à niveau votre système de base. C'est certainement une mauvaise idée et va à l'encontre des intentions des auteurs ...
Mangled Deutz