Nenhuma instalação local do gulp encontrada, mesmo após a instalação do npm install -g gulp

88

Eu tentei instalar o gulp por

npm install -g gulp

A saída parece ser algo assim. (pulei alguns logs)

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)

No script acima, posso ver uma linha / usr / bin / gulp -> /usr/lib/node_modules/gulp/bin/gulp.js que eu acho que está fazendo um simulink na pasta bin. Então, eu deveria estar recebendo gulp globalmente, mas recebo esse erro.

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

Alguma ideia de por que estou recebendo esse erro.

obrigado

harikrish
fonte

Respostas:

103

Conforme apontado no documento , você deve instalá-lo globalmente (você fez isso) e adicioná-lo aos deps de desenvolvimento do seu projeto (localmente):

npm install gulp --save-dev
Deutz mutilado
fonte
1
Existe a possibilidade de um Gulp não copiar os arquivos do nó para a pasta local do projeto? Tendo o Gulp instalado globalmente, este comando faz uma cópia local dele, pelo que entendi.
Vladislav Rastrusny
O ponto é que a instalação local garante que a construção do seu projeto NÃO quebrará, mesmo se as instalações do seu sistema forem atualizadas (a instalação global do gulp está lá apenas para fornecer um comando binário no caminho). Esta é a mesma situação para Grunt.
Mangled Deutz
12
Eu também odeio cópias completas de módulos de nó em cada pasta de projeto, então eu uso regularmentenpm link gulp --save-dev
PA.
1
Legal, mas não estou vendo que npm link gulp --save-devrespeite o --save-devparâmetro.
Derek Greer
2
@PA, para reiterar os comentários sobre as outras respostas, npm link gulpé uma má ideia.
sfarbota
35

Eu enfrentei o mesmo problema. Resolvi criando um link

npm link gulp
Piscript
fonte
8
Como afirmado em outro comentário, esta é uma má ideia. Sistemas de compilação como gulp ou grunt são projetados de forma que um projeto específico possa depender de uma versão específica da compilação (portanto, ainda criará independentemente do estado ou das versões instaladas de seu sistema global). Tentar conectar a versão global e local do gulp é dar um tiro no próprio pé ...
Mangled Deutz
@MangledDeutz Não estou interessado em amarrar gulp a este projeto específico. Eu só quero usá-lo como uma pequena ferramenta de linha de comando para automatizar algumas tarefas de construção. Meu gulpfile não fará parte do repositório git e, de fato, se eu clonar esse repositório em outro computador, posso decidir nem usar o gulp para automatizar essas tarefas, posso usar uma ferramenta diferente. Quero fingir que o node e o npm não existem e o gulp é apenas um pequeno programa em / usr / bin que procura um gulpfile.js no CWD e funciona magicamente. Se isso é tudo que quero, essa resposta não é uma coisa razoável a se fazer?
Jack M
@JackM ainda não é uma coisa razoável, porque dependendo de qual versão do gulp está instalada em todo o sistema, ele pode ou não funcionar com o gulpfile.js (e quebra "magicamente" sem motivo) ...
Mangled Deutz
@MangledDeutz Mas isso é verdade para qualquer programa de linha de comando que aceita um arquivo como entrada.
Jack M
Yaaas! ISTO! Deixe o desenvolvedor decidir quando a versão global é apropriada ou não !!
Peter Konga-Kamau
-2

Verifique o diretório /home/username/.npm: talvez os grupos / proprietário dos arquivos sejam root. Mudar para nome de usuário:

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

Recentemente, encontrei a mensagem de erro "Local gulp not found". Consegui superar isso criando um link simbólico do diretório node_modules global para o diretório do projeto local onde meu gulpfile.js está localizado.

user3791139
fonte
7
Você está então derrotando o propósito de um sistema de compilação disponível localmente que NÃO falha quando você atualiza seu sistema básico. Esta é certamente uma má ideia e vai contra as intenções do autor ...
Mangled Deutz