Knotenpaket (Grunt) installiert, aber nicht verfügbar

187

Ich versuche, eine github jquery-ui-Bibliothek mit zu erstellengrunt , aber nach dem Ausführen kann npm installich den Befehl immer noch nicht gemäß der Readme-Datei ausführen . Es gibt nur 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 

Ich bin verwirrt, was vermisse ich bitte?

AJP
quelle

Antworten:

412

Die Befehlszeilentools sind nicht in der neuesten Version von Grunt enthalten (0,4 zum Zeitpunkt des Schreibens), sondern müssen separat installiert werden.

Dies ist eine gute Idee, da Sie verschiedene Versionen von Grunt in verschiedenen Projekten gruntausführen können, diese aber dennoch mit dem Befehl nice concise ausführen können.

Installieren Sie also zuerst die grunt cli-Tools global:

npm install -g grunt-cli

(oder möglicherweise sudo npm install -g grunt-cli).

Sie können feststellen, dass dies funktioniert, indem Sie tippen grunt --version

Jetzt können Sie die aktuelle Version von Grunt local in Ihrem Projekt installieren. Also vom Standort Ihres Projekts ...

npm install grunt --save-dev

Der save-devWechsel ist nicht unbedingt erforderlich, aber eine gute Idee, da er das Grunzen im Abschnitt package.json devDependencies als reines Entwicklungsmodul markiert.

Tom P.
quelle
5
Ich konnte den Pfad des Grunt-Ordners in den Pfad-
Systemvariablen
10
musste mit sudo laufen
Phil Hudson
2
Wenn dies bei Ihnen nicht funktioniert, deinstallieren Sie grunt und grunt-cli und wiederholen Sie den Vorgang. Funktioniert nur bei mir wenn ich sudoDanke Tom benutze !
Termato
Hinweis: Wenn Sie sudo verwenden müssen, hängt dies mit der Einrichtung des Knotens zusammen. Es ist nicht ideal, kann aber behoben werden. Sindresorhus schlägt einen Weg vor . Ich bevorzuge NVM (Node Version Manager)
Tom P
1
Wenn Sie hier sind und node not foundnach dem Ausführen des obigen Befehls getroffen haben und den Paketmanager zum Installieren des Knotens verwendet haben, müssen Sie auch symlinksudo ln -s /usr/local/bin/nodejs /usr/local/bin/node
anon58192932
26

Fügen Sie /usr/local/share/npm/bin/Ihrem hinzu$PATH

Sam Figueroa
quelle
Vielen Dank, das Hinzufügen zu meinem .bash_profile hat mir geholfen, mein Problem zu beheben!
Thilak Rao
2
Hinzufügen $HOME/npm/binfunktionierte für mich auf Ubuntu 13.10.
Eliran Malka
24

Wenn Sie das Grunt-Paket durch Ausführen installiert haben npm install -g gruntund es immer noch " No command 'grunt' foundoder" grunt: command not foundlautet, können Sie Knoten-Binärdateien schnell und schmutzig mit Ihrem $ PATH verknüpfen, um dies zu erreichen.

Unter MacOSX / Linux können Sie diese Zeile zu Ihrer ~/.bash_profileoder ~/.bashrc-Datei hinzufügen .

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

Sie sollten wahrscheinlich /usr/local/Cellar/node/HEAD/bindurch den Pfad ersetzen, in dem sich Ihre Knoten-Binärdateien befinden.

Wenn das für mich schnell und schmutzig ist, liegt es daran, dass alles funktionieren sollte, ohne dies zu tun, aber aus einem unbekannten Grund scheint eine Verbindung unterbrochen zu sein. Da mir niemand im IRC sagen konnte, warum dies passiert ist, habe ich meinen eigenen Weg gefunden, damit es (grunzt) funktioniert.

PS: Dies sollte dir helfen, Grunzen zum Laufen zu bringen. Diese Antwort hat nichts mit jquery-ui zu tun.

Update 02/2013 : Sie sollten sich die Antwort von @ tom-p ansehen , die besser erklärt, was los ist. Tom gibt uns die wirkliche Lösung , anstatt Ihre bashrc Hacking: beide sollten funktionieren, aber Sie sollten versuchen , die Installation grunt-clizuerst .

Rayfranco
quelle
Siehe die andere Antwort - das liefert die Erklärung.
Yugal Jindle
Können Sie klarstellen, welcher Keller hier ist? Ist das etwas Spezielles für Sie / Ihre Installation?
Brian C
12

In meinem Fall muss ich die Datei / usr / local / bin / grunt in Zeile 1 ändern (machen Sie das nicht):

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

Bearbeitet:

Um Probleme zu vermeiden, habe ich einen Link mit dem Namen "node" erstellt, da viele andere Programme immer noch den Befehl "node" verwenden.

 sudo ln -s /usr/bin/nodejs /usr/sbin/node
Edgard Leal
quelle
6
Konstruktives Downvote, um jeden davon abzubringen, gepackte Dateien manuell zu bearbeiten. Für Ihr Problem müssen Sie apt-get install nodejs-legacy.
Luft
Ihr Vorschlag ist einer der neuesten und einzigen Vorschläge, die bei meiner brandneuen Installation von Debian Jessie funktioniert haben.
Helzgate
Ok Air, aber ich benutze OSX, ich werde etwas versuchen wiebrew install nodejs-leacy
Edgard Leal
@ Air danke das war mein problem. Nachdem alle vorherigen Schritte ausgeführt wurden, konnte es kein Grunzen erkennen .
Kemicofa Ghost
11

Es gibt noch eine Möglichkeit, Grunzen unter Windows auszuführen, ohne global etwas hinzuzufügen. Dies ist ein Fall, wenn Sie mit% PATH% nichts tun müssen

wenn du grunt und grunt-cli installiert hast (ohne -g Schalter). Entweder von:

npm install grunt-cli
npm install grunt@0.4.5

Oder indem Sie das in Ihrer packages.json-Datei haben, wie:

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

Sie können grunt von Ihrer lokalen Installation aus aufrufen, indem Sie:

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

Dies ist eine Lösung für diejenigen, die aus bestimmten Gründen nicht mit PATH spielen möchten oder können oder die ständig von etwas anderem durcheinander gebracht werden, beispielsweise auf einem Build-Agenten.

Bearbeiten: Versionen hinzugefügt, da das Grunzen-Cli mit Grunzen> 0,3 funktioniert

Tomajar
quelle
Jemand, der Docker verwendet, könnte es nützlich finden.
Daniel Kmak
11

Unter WIN7 musste ich den Pfad zum Ordner npm (der die schwer fassbare Grunzdatei enthält) manuell zur Umgebungsvariablen Windows PATH hinzufügen.
In meinem Fall war dasC:\Users\mhaagsma\AppData\Roaming\npm

Marvin
quelle
2

Der richtige Weg, um grunt zu installieren, besteht darin, diesen Befehl auszuführen:

npm install grunt -g

(Stellen Sie dem obigen Befehl "sudo" voran, wenn Sie eine EACCESS-Fehlermeldung erhalten.)

-g veranlasst npm, das Paket global zu installieren, sodass Sie es jederzeit auf Ihrem aktuellen Computer verwenden können.

Adonis K. Kakoulidis
quelle
6
Beachten Sie, dass dies gruntimmer noch fehlschlägt , wenn Sie dies tun (ich habe es gerade getestet), da das Grunt-Paket keine Befehlszeilen-Tools enthält. Du brauchst grunt-cli.
Luft
3
Anscheinend brauchen Sie sowohl die lokale als auch die globale
Adonis K. Kakoulidis
1
globale Installation (für Befehlszeilenanforderungen), lokale Installation für Anforderungen vom Typ "erfordern (was auch immer)". Sie müssen also beides tun. Danke für Ihre Hilfe!
Programmierer
1

Hallo, ich hatte dieses Problem auf dem Mac und habe es getan

global installiert und Präfix mit globalem Pfad

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

jetzt $ which grunt

sollte ausstellen /usr/local/bin/grunt

Prost

Theva
quelle
0

Manchmal muss npm install package_name -ges funktionieren.

Unterschlüssel
quelle
Danke für die Antwort. Ich habe einen anderen Weg gefunden, um das zu umgehen, was ich versucht habe.
AJP
@AJP Kannst du uns sagen, wie du es machst, anstatt uns nur zu sagen, dass du es getan hast? Vielen Dank.
Rayfranco
@rayfranco Entschuldigung, ich habe es im Grunde genommen umgangen, indem ich aufgegeben habe ... Ich denke, wir haben versucht, die jquery-ui-Bibliothek zu erstellen, also haben wir sie gerade heruntergeladen, können uns jetzt aber nicht wirklich erinnern ... Entschuldigung, ich weiß, dass das nicht nützlich ist Bitte senden Sie die Lösung zurück, wenn Sie sie gefunden haben. Es sieht so aus, als wären viele andere auf diese Seite gekommen (ohne Erfolg).
AJP
0

Eine andere Lösung besteht darin, den Ubuntu-Bundler in meinem Fall zu entfernen, den ich verwendet habe:

sudo apt-get remove ruby-bundler 

Das hat bei mir funktioniert.

Israel Morales
quelle
0

Unter Windows scheint ein Teil des Rätsels darin zu liegen, wo npm die Datei Grunt.cmd installiert. Während ich auf meiner Linux-Box nur sudo npm install -g grunt-cli ausführen musste, wurde Grunt auf meinem Windows 8-Arbeitslaptop im Verzeichnis '.npm-global' abgelegt:% USER_HOME% \. Npm-global und ich musste das dem Pfad hinzufügen.

Unter Windows waren meine Schritte:

  • npm installiere -g grunt-cli

  • Finde heraus, wo zum Teufel grunt.cmd war (ich denke für einige ist es in% USER_HOME% \ App_Data \ Roaming)

  • Der Speicherort wurde meiner Umgebungsvariablen "Pfad" hinzugefügt. Öffnete eine neue cmd-Eingabeaufforderung und der Befehl grunt lief einwandfrei.

MattC
quelle
0

Unter Windows 10 Fügen Sie dies Ihrem Pfad hinzu:

%APPDATA%\npm

Dies verweist auf den Ordner ~/AppData/Roaming/npm

[Angenommen, Sie sind bereits ausgeführt npm install -g grunt-cli]

Jomofrodo
quelle