Pacote de nó (Grunt) instalado, mas não disponível

187

Estou tentando criar uma biblioteca jquery-ui do github usando grunt, mas depois de executar npm installainda não consigo executar o comando de acordo com o arquivo leia - me . Apenas fornece No command 'grunt' found:

james@ubuntu:~/Documents/projects/ad2/lib/jquery-ui$ grunt build
No command 'grunt' found, did you mean:
 Command 'grun' from package 'grun' (universe)
grunt: command not found
james@ubuntu:~/Documents/projects/ad2/lib/jquery-ui$ npm ls
jquery-ui@1.9.0pre /home/james/Documents/projects/ad2/lib/jquery-ui
├─┬ grunt@0.3.9 
 ├── async@0.1.18 
 ├── colors@0.6.0-1 
 ├─┬ connect@1.8.7 
  ├── formidable@1.0.9 
  ├── mime@1.2.5 
  └── qs@0.5.0 
 ├── dateformat@1.0.2-1.2.3 
 ├─┬ glob-whatev@0.1.6 
  └─┬ minimatch@0.2.4 
    └── lru-cache@1.0.6 
 ├─┬ gzip-js@0.3.1 
  ├── crc32@0.2.2 
  └── deflate-js@0.2.2 
 ├── hooker@0.2.3 
 ├─┬ jshint@0.5.9 
  ├── argsparser@0.0.6 
  └─┬ minimatch@0.2.4 
    └── lru-cache@1.0.6 
 ├─┬ nodeunit@0.6.4 
  ├── tap-assert@0.0.10 
  └─┬ tap-producer@0.0.1 
    ├── inherits@1.0.0 
    ├── tap-results@0.0.2 
    └── yamlish@0.0.5 
 ├─┬ nopt@1.0.10 
  └── abbrev@1.0.3 
 ├─┬ prompt@0.1.12 
  ├── pkginfo@0.2.3 
  └─┬ winston@0.5.11 
    ├── eyes@0.1.7 
    ├─┬ loggly@0.3.11 
     └── timespan@2.2.0 
    └── stack-trace@0.0.6 
 ├── semver@1.0.13 
 ├─┬ temporary@0.0.2 
  └── package@1.0.0 
 ├── uglify-js@1.0.7 
 ├── underscore@1.2.4 
 └── underscore.string@2.1.1 
├── grunt-compare-size@0.1.4 
├─┬ grunt-css@0.2.0 
 ├── csslint@0.9.8 
 └── sqwish@0.2.0 
├── grunt-html@0.1.1 
├── request@2.9.153 
├─┬ rimraf@2.0.1 
 └── graceful-fs@1.1.8 
└─┬ testswarm@0.2.2 
  └── request@2.9.202 

Estou confuso, o que estou perdendo, por favor?

AJP
fonte

Respostas:

412

As ferramentas de linha de comando não estão incluídas na versão mais recente do Grunt (0.4 no momento da gravação). Em vez disso, você precisa instalá-las separadamente.

Essa é uma boa idéia, pois significa que você pode ter diferentes versões do Grunt em execução em projetos diferentes, mas ainda usar o gruntcomando concise agradável para executá-las.

Então, primeiro instale as ferramentas grunt cli globalmente:

npm install -g grunt-cli

(ou possivelmente sudo npm install -g grunt-cli).

Você pode estabelecer que está funcionando digitando grunt --version

Agora você pode instalar a versão atual do Grunt local no seu projeto. Então, a partir da localização do seu projeto ...

npm install grunt --save-dev

O save-devswitch não é estritamente necessário, mas é uma boa idéia, pois marcará o grunt em sua seção package.json devDependencies como um módulo somente de desenvolvimento.

Tom P
fonte
5
Eu não conseguia encontrar o caminho da pasta grunhido no Caminho Variáveis do sistema após a execução npm instalar -g grunhido-cli
singsuyash
10
teve que correr usando sudo
Phil Hudson
2
Se isso não funcionar, tente desinstalar o grunt e o grunt-cli e faça novamente. Só funciona para mim se eu usar sudoObrigado Tom!
Termato 03/02
Nota: Se você precisar usar o sudo, isso tem a ver com a configuração do nó. Não é o ideal, mas pode ser corrigido. sindresorhus sugere um caminho . Eu prefiro usar NVM (gerente de versão de nó)
Tom P
1
Se você está aqui e você acertar node not founddepois de executar o comando acima e você usou o gerenciador de pacotes para instalar nó, então você também precisa symlinksudo ln -s /usr/local/bin/nodejs /usr/local/bin/node
anon58192932
26

Adicione /usr/local/share/npm/bin/ao seu$PATH

Sam Figueroa
fonte
Obrigado, adicionar isso ao meu .bash_profile ajudou a corrigir o meu problema!
Thilak Rao
2
adicionando $HOME/npm/binfuncionou para mim no ubuntu 13.10.
Eliran Malka
24

Se você instalou o pacote Grunt executando npm install -g grunte ele ainda diz No command 'grunt' foundou grunt: command not found, uma maneira rápida e suja de fazer esse trabalho é vincular binários de nó ao seu $ PATH manualmente.

No MacOSX / Linux, você pode adicionar esta linha ao seu arquivo ~/.bash_profileou ~/.bashrc.

PATH=$PATH:/usr/local/Cellar/node/HEAD/bin # Add NPM binaries

Você provavelmente deve substituir /usr/local/Cellar/node/HEAD/binpelo caminho em que os binários do nó podem ser encontrados.

Se isso é rápido e sujo para mim, é porque tudo deve funcionar sem fazer isso, mas por um motivo desconhecido, um link parece quebrado. Como ninguém no IRC poderia me dizer por que isso aconteceu, eu encontrei meu próprio caminho para fazê-lo funcionar.

PS: Isso deve ajudá-lo a fazer o grunhido funcionar, essa resposta não está relacionada ao jquery-ui.

Atualização 02/2013 : Você deve dar uma olhada na resposta do @ tom-p, que explica melhor o que está acontecendo. Tom nos fornece a solução real, em vez de invadir seu arquivo bashrc: ambos devem funcionar, mas você deve tentar instalar grunt-cliprimeiro .

rayfranco
fonte
Veja a outra resposta - que fornece a explicação.
Yugal Jindle
Você pode clarear o que está aqui? Isso é algo específico para você / sua instalação?
Brian C
12

No meu caso, preciso modificar o arquivo / usr / local / bin / grunt na linha 1 (não faça isso):

 #!/usr/bin/env node //remove this line
 #!/usr/bin/env nodejs // and put this line to run with nodejs

Editado:

Para evitar problemas, criei um link com o nome de "nó" porque muitos outros programas ainda usam o comando "nó".

 sudo ln -s /usr/bin/nodejs /usr/sbin/node
Edgard Leal
fonte
6
Voto negativo construtivo para dissuadir qualquer pessoa de editar manualmente os arquivos compactados. Para o seu problema, você precisa apt-get install nodejs-legacy.
Air
Sua sugestão é uma das sugestões mais recentes e únicas que funcionaram na minha nova instalação do Debian Jessie.
Helzgate
Ok Air, mas eu estou usando OSX, vou tentar alguma coisa comobrew install nodejs-leacy
Edgard Leal
@ Air obrigado, esse foi o meu problema. Depois de seguir todas as etapas anteriores, não conseguiu reconhecer o grunhido .
Kemicofa ghost
11

Há mais uma maneira de executar o grunhido no Windows, sem adicionar nada globalmente. Este é um caso em que você não precisa fazer nada com% PATH%

se você tiver o grunt e o grunt-cli instalados (sem a opção -g). Ou por:

npm install grunt-cli
npm install grunt@0.4.5

Ou tendo isso em seu arquivo packages.json como:

"devDependencies": {
    "grunt-cli": "^1.2.0",
    "grunt": "^0.4.5",

Você pode chamar o grunt da sua instalação local:

node node_modules\grunt-cli\bin\grunt --version

Esta é uma solução para aqueles que, por algum motivo, não querem ou não podem brincar com o PATH, ou têm outra coisa bagunçando o tempo todo, por exemplo, em um agente de construção.

Editar: versões adicionadas, pois o grunt-cli trabalha com o grunt> 0.3

tomajar
fonte
Alguém usando o docker pode achar útil.
Daniel Kmak
11

No WIN7, tive que adicionar manualmente o caminho para a pasta npm (que contém o arquivo 'grunhido' indescritível) à variável de ambiente PATH do Windows.
No meu caso, isso foiC:\Users\mhaagsma\AppData\Roaming\npm

Marvin
fonte
2

A maneira correta de instalar o grunt é executando este comando:

npm install grunt -g

(Anexe "sudo" ao comando acima se você receber uma mensagem de erro EACCESS)

-g fará com que o npm instale o pacote globalmente, assim você poderá usá-lo sempre que quiser na sua máquina atual.

Adonis K. Kakoulidis
fonte
6
Observe que se você fizer isso (acabei de testar), gruntainda falhará porque o pacote grunt não inclui nenhuma ferramenta de linha de comando. Você precisa grunt-cli.
Air
3
Aparentemente, você precisa tanto do local e global
Adonis K. Kakoulidis
1
instalação global (para necessidades de linha de comando), instalação local para necessidades do tipo "require (any))". Então você precisa fazer as duas coisas. Obrigado pela ajuda!
prograhammer
1

Olá, tive esse problema no mac, e o que fiz foi

instalado globalmente e prefixo com caminho global

sudo npm install grunt -g --prefix=/usr/local

agora $ which grunt

deve colocar /usr/local/bin/grunt

Felicidades

Theva
fonte
0

Às vezes você tem npm install package_name -gque fazer funcionar.

lowerkey
fonte
Obrigado pela resposta. Eu encontrei uma maneira diferente de contornar o que estava tentando fazer.
AJP
@AJP, você poderia nos dizer como fazê-lo funcionar, em vez de apenas nos dizer o que fez? Obrigado.
Rayfranco
@rayfranco desculpe, eu basicamente desisti desistindo ... Acho que estávamos tentando criar a biblioteca jquery-ui talvez, então apenas o baixamos, mas não consigo me lembrar agora ... desculpe, eu sei que isso não é útil , publique novamente a solução quando a encontrar. Parece que muitos outros acessaram esta página (sem sucesso).
AJP
0

Outra solução é remover o bundler do ubuntu no meu caso, usei:

sudo apt-get remove ruby-bundler 

Isso funcionou para mim.

Israel Morales
fonte
0

On Windows, part of the mystery appears to be where npm installs the Grunt.cmd file. While on my Linux box, I just had to run sudo npm install -g grunt-cli, on my Windows 8 work laptop, Grunt was placed in the '.npm-global' directory: %USER_HOME%\.npm-global and I had to add that to the Path.

So on Windows my steps were:

  • npm install -g grunt-cli

  • figure out where the heck grunt.cmd was (I guess for some it is in %USER_HOME%\App_Data\Roaming)

  • Added the location to my Path environment variable. Opened a new cmd prompt and the grunt command ran fine.

MattC
fonte
0

On Windows 10 Add this to your Path:

%APPDATA%\npm

This references the folder ~/AppData/Roaming/npm

[Assumes that you have already run npm install -g grunt-cli]

jomofrodo
fonte