Pacchetto nodo (Grunt) installato ma non disponibile


187

Sto cercando di creare una libreria jithery-ui github usando grunt, ma dopo l'esecuzione npm installnon riesco ancora a eseguire il comando in base al file readme . Dà solo 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 

Sono confuso, cosa mi manca per favore?

Risposte:


412

Gli strumenti da riga di comando non sono inclusi con l'ultima versione di Grunt (0.4 al momento della scrittura), ma è necessario installarli separatamente.

Questa è una buona idea perché significa che puoi avere diverse versioni di Grunt in esecuzione su progetti diversi ma utilizzare comunque il gruntcomando conciso per eseguirle.

Quindi prima installa gli strumenti grunt cli a livello globale:

npm install -g grunt-cli

(o possibilmente sudo npm install -g grunt-cli).

Puoi stabilire che funziona digitando grunt --version

Ora puoi installare la versione corrente di Grunt local sul tuo progetto. Quindi dalla posizione del tuo progetto ...

npm install grunt --save-dev

Lo save-devswitch non è strettamente necessario ma è una buona idea perché segnerà grugnito nella sua sezione package.json devDependencies come modulo di solo sviluppo.


5
Non sono riuscito a trovare il percorso della cartella grunt nelle variabili di sistema Path dopo aver eseguito npm install -g grunt-cli
singsuyash il

10
ho dovuto correre usando sudo
Phil Hudson il

2
Se questo non funziona per te, prova a disinstallare grunt e grunt-cli e poi a farlo di nuovo. Funziona solo per me se uso sudoGrazie Tom!
Termato

Nota: se devi usare sudo ha a che fare con la configurazione del nodo. Non è l'ideale ma può essere risolto. Sindresorhus suggerisce un modo . Preferisco usare NVM (gestore versione nodo)
Tom P

1
Se sei qui e hai premuto node not founddopo aver eseguito il comando sopra e hai utilizzato il gestore pacchetti per installare il nodo, devi anche sudo ln -s /usr/local/bin/nodejs /usr/local/bin/node
collegare

26

Aggiungi /usr/local/share/npm/bin/al tuo$PATH


Grazie, l'aggiunta di questo al mio .bash_profile mi ha aiutato a risolvere il mio problema!
Thilak Rao,

2
l'aggiunta ha $HOME/npm/binfunzionato per me su Ubuntu 13.10.
Eliran Malka,

24

Se hai installato il pacchetto Grunt eseguendolo npm install -g grunte lo dice ancora No command 'grunt' foundo grunt: command not found, un modo rapido e sporco per farlo funzionare è collegare manualmente i binari dei nodi al tuo $ PATH.

Su MacOSX / Linux puoi aggiungere questa linea al tuo ~/.bash_profileo al tuo ~/.bashrcfile.

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

Probabilmente dovresti sostituirlo /usr/local/Cellar/node/HEAD/bincon il percorso in cui è stato possibile trovare i file binari del nodo.

Se questo è veloce e sporco per me, è perché tutto dovrebbe funzionare senza farlo, ma per un motivo sconosciuto, un collegamento sembra interrotto. Dato che nessuno su IRC poteva dirmi perché è successo, ho trovato il mio modo di farlo funzionare (grugnito).

PS: Questo dovrebbe aiutarti a far funzionare il grugnito, questa risposta non è correlata a jquery-ui.

Aggiornamento 02/2013 : dovresti dare un'occhiata alla risposta di @ tom-p che spiega meglio cosa sta succedendo. Tom ci offre la vera soluzione invece di hackerare il tuo file bashrc: entrambi dovrebbero funzionare, ma dovresti provare grunt-cliprima a installare .


Vedi l'altra risposta - che fornisce la spiegazione.
Yugal Jindle,

Puoi chiarire che cantina è qui? È qualcosa di specifico per te / la tua installazione?
Brian C,

12

Nel mio caso, ho bisogno di modificare il file / usr / local / bin / grunt nella riga 1 (non farlo):

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

Modificato:

Per evitare problemi, ho creato un collegamento con il nome di "nodo" perché molti altri programmi usano ancora il comando "nodo".

 sudo ln -s /usr/bin/nodejs /usr/sbin/node

6
Downvote costruttivo per dissuadere chiunque dalla modifica manuale dei file compressi. Per il tuo problema devi apt-get install nodejs-legacy.
Air

Il tuo suggerimento è uno dei più recenti e unici suggerimenti che hanno funzionato sulla mia nuova installazione di Debian Jessie.
Helzgate,

Ok Air, ma sto usando OSX, proverò qualcosa comebrew install nodejs-leacy
Edgard Leal,

@Air grazie che era un mio problema. Dopo aver seguito tutti i passaggi precedenti, non è stato in grado di riconoscere il grugnito .
kemicofa ghost,

11

C'è un altro modo per eseguire grugnito su Windows, senza aggiungere nulla a livello globale. Questo è un caso in cui non devi fare nulla con% PATH%

se hai installato grunt e grunt-cli (senza interruttore -g). Mediante:

npm install grunt-cli
npm install grunt@0.4.5

O avendo quello nel tuo file packages.json come:

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

Puoi chiamare grunt dalla tua installazione locale:

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

Questa è una soluzione per coloro che per alcuni motivi non vogliono o non possono giocare con PATH, o hanno qualcos'altro in continuazione, ad esempio su un agente di compilazione.

Modifica: aggiunte versioni quando il grunt-cli funziona con grunt> 0.3


Qualcuno che utilizza la finestra mobile potrebbe trovarlo utile.
Daniel Kmak,

11

Su WIN7 ho dovuto aggiungere manualmente il percorso alla cartella npm (che contiene il file 'grunt' sfuggente) alla variabile ambientale PATH di Windows.
Nel mio caso lo eraC:\Users\mhaagsma\AppData\Roaming\npm


2

Il modo giusto per installare grunt è eseguendo questo comando:

npm install grunt -g

(Prepend "sudo" al comando sopra se viene visualizzato un messaggio di errore EACCESS)

-g farà in modo che npm installi il pacchetto a livello globale, così sarai in grado di usarlo quando vuoi nella tua macchina attuale.


6
Nota che se lo fai (ho appena testato), gruntfallirà comunque perché il pacchetto grunt non include nessuno strumento da riga di comando. Hai bisogno grunt-cli.
Air

3
apparentemente, hai bisogno sia del locale che del globale
Adonis K. Kakoulidis

1
installazione globale (per esigenze da riga di comando), installazione locale per esigenze di tipo "richiedono (qualunque cosa)". Quindi devi fare entrambe le cose. Grazie per l'aiuto!
prograhammer

1

Ciao ho avuto questo problema su Mac, e quello che ho fatto è stato

installato a livello globale e prefisso con percorso globale

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

adesso $ which grunt

dovrebbe mettere fuori /usr/local/bin/grunt

Saluti


0

A volte devi npm install package_name -gfarlo funzionare.


Grazie per la risposta. Ho trovato un modo diverso per quello che stavo cercando di fare.
AJP

@AJP potresti dirci come funziona, invece di dirci che l'hai fatto? Grazie.
Rayfranco,

@rayfranco scusate ho praticamente aggirato rinunciando ... Penso che stessimo forse provando a creare la libreria jquery-ui, quindi l'abbiamo appena scaricata, non riesco proprio a ricordare ora però ... Mi dispiace, so che non è utile , ti preghiamo di inviare nuovamente la soluzione quando la trovi. Sembra che molti altri siano arrivati ​​a questa pagina (senza successo).
AJP,

0

Un'altra soluzione è quella di rimuovere il bundler Ubuntu nel mio caso che ho usato:

sudo apt-get remove ruby-bundler 

Questo ha funzionato per me.


0

Su Windows, parte del mistero sembra essere dove npm installa il file Grunt.cmd. Mentre ero sulla mia macchina Linux, dovevo solo eseguire sudo npm install -g grunt-cli, sul mio laptop di lavoro con Windows 8, Grunt era collocato nella directory '.npm-global':% USER_HOME% \. Npm-global e I ho dovuto aggiungerlo al percorso.

Quindi su Windows i miei passi erano:

  • npm installa -g grunt-cli

  • capire dov'era il diavolo grunt.cmd (suppongo che per alcuni si trovi in% USER_HOME% \ App_Data \ Roaming)

  • Aggiunta la posizione alla mia variabile d'ambiente Path. Ha aperto un nuovo prompt cmd e il comando grunt è stato eseguito correttamente.


0

Su Windows 10 Aggiungi questo al tuo percorso:

%APPDATA%\npm

Questo fa riferimento alla cartella ~/AppData/Roaming/npm

[Suppone che tu abbia già eseguito npm install -g grunt-cli]

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.