Pakiet węzłów (Grunt) zainstalowany, ale niedostępny

187

Próbuję zbudować bibliotekę github jquery-ui przy użyciu grunt, ale po uruchomieniu npm installnadal nie mogę uruchomić polecenia zgodnie z plikiem readme . To po prostu daje 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 

Jestem zdezorientowany, czego mi brakuje?

AJP
źródło

Odpowiedzi:

412

Narzędzia wiersza poleceń nie są dołączone do najnowszej wersji Grunta (0.4 w momencie pisania), zamiast tego należy je zainstalować osobno.

To dobry pomysł, ponieważ oznacza, że ​​możesz mieć różne wersje Grunta działające w różnych projektach, ale nadal korzystasz z przyjemnego, zwięzłego gruntpolecenia, aby je uruchomić.

Najpierw zainstaluj globalnie narzędzia grunt cli:

npm install -g grunt-cli

(lub ewentualnie sudo npm install -g grunt-cli).

Możesz ustalić, że działa, pisząc grunt --version

Teraz możesz zainstalować bieżącą wersję Grunt local w swoim projekcie. Więc z lokalizacji twojego projektu ...

npm install grunt --save-dev

save-devPrzełącznik nie jest to bezwzględnie konieczne, ale jest to dobry pomysł, ponieważ będzie to oznaczać chrząknięcie w sekcji devDependencies package.json jako rozwinięcie tylko modułu.

Tom P.
źródło
5
Po uruchomieniu npm install -g grunt-cli
singsuyash
10
musiał biec używając sudo
Phil Hudson
2
Jeśli to nie zadziała, spróbuj odinstalować grunt i grunt-cli, a następnie wykonaj to ponownie. Działa tylko dla mnie, jeśli używam sudoDziękuję Tom!
Termato
Uwaga: Jeśli musisz używać sudo, to ma związek z konfiguracją węzła. Nie jest idealny, ale można go naprawić. sindresorhus sugeruje jeden sposób . Wolę używać NVM (menedżera wersji węzła)
Tom P
1
Jeśli jesteś tutaj i naciśniesz node not foundpo uruchomieniu powyższej komendy i użyłeś menedżera pakietów do zainstalowania węzła, musisz również sudo ln -s /usr/local/bin/nodejs /usr/local/bin/node
utworzyć
26

Dodaj /usr/local/share/npm/bin/do swojego$PATH

Sam Figueroa
źródło
Dziękuję, dodanie tego do mojego .bash_profile pomogło naprawić mój problem!
Thilak Rao
2
dodawanie $HOME/npm/bindziałało dla mnie na Ubuntu 13.10.
Eliran Malka
24

Jeśli zainstalowałeś już pakiet Grunta npm install -g grunti nadal mówi on, No command 'grunt' foundalbo grunt: command not foundszybkim i brudnym sposobem na uzyskanie tego jest ręczne połączenie binariów węzłów z $ PATH.

W systemie MacOSX / Linux możesz dodać tę linię do pliku ~/.bash_profilelub ~/.bashrcpliku.

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

Prawdopodobnie należy zastąpić /usr/local/Cellar/node/HEAD/binścieżką, w której można znaleźć pliki binarne węzłów.

Jeśli jest to dla mnie szybkie i brudne , to dlatego, że wszystko powinno działać bez robienia tego, ale z nieznanego powodu link wydaje się zepsuty. Ponieważ nikt na IRC nie mógł mi powiedzieć, dlaczego tak się stało, znalazłem swój własny sposób, aby to (chrząknięcie) działało.

PS: To powinno pomóc ci w pracy z chrząkami, ta odpowiedź nie jest związana z jquery-ui.

Aktualizacja 02/2013 : Powinieneś rzucić okiem na odpowiedź @ tom-p, która lepiej wyjaśnia, co się dzieje. Tom daje nam prawdziwe rozwiązanie zamiast hacking plik .bashrc: oba powinny działać, ale należy spróbować zainstalować grunt-clipierwszy .

rayfranco
źródło
Zobacz drugą odpowiedź - która zawiera wyjaśnienie.
Yugal Jindle
Czy możesz potwierdzić, co jest tutaj w piwnicy? Czy jest to coś specyficznego dla Ciebie / Twojej instalacji?
Brian C
12

W moim przypadku muszę zmodyfikować plik / usr / local / bin / grunt w wierszu 1 (nie rób tego):

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

Edytowane:

Aby uniknąć problemów, utworzyłem łącze o nazwie „węzeł”, ponieważ wiele innych programów nadal używa polecenia „węzeł”.

 sudo ln -s /usr/bin/nodejs /usr/sbin/node
Edgard Leal
źródło
6
Konstruktywna opinia zwrotna, aby odwieść każdego od ręcznej edycji spakowanych plików. Aby rozwiązać problem, musisz apt-get install nodejs-legacy.
Air
Twoja sugestia jest jedną z najnowszych i jedynych sugestii, które działały na mojej nowej instalacji Debian Jessie.
Helzgate
Ok Air, ale używam OSX, spróbuję czegoś takiegobrew install nodejs-leacy
Edgard Leal
@ Dzięki, to był mój problem. Po wykonaniu wszystkich poprzednich kroków nie był w stanie rozpoznać chrząknięcia .
kemicofa ghost
11

Jest jeszcze jeden sposób, aby uruchomić chrząknięcie w systemie Windows, bez dodawania niczego globalnie. Jest to przypadek, gdy nie musisz nic robić z% PATH%

jeśli masz zainstalowane chrząknięcie i chrząkanie-cli (bez przełącznika -g). Albo:

npm install grunt-cli
npm install grunt@0.4.5

Lub umieszczając to w pliku Package.json, takim jak:

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

Możesz wywołać chrząknięcie z lokalnej instalacji przez:

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

Jest to rozwiązanie dla tych, którzy z jakichś powodów nie chcą lub nie mogą bawić się PATH, lub mają coś innego, co psuje cały czas, na przykład na agencie kompilacji.

Edycja: Dodano wersje, ponieważ grunt-cli działa z chrząknięciem> 0.3

tomajar
źródło
Ktoś korzystający z Dockera może uznać to za przydatne.
Daniel Kmak,
11

Na WIN7 musiałem ręcznie dodać ścieżkę do folderu npm (który zawiera nieuchwytny plik „chrząknięcia”) do zmiennej środowiskowej Windows PATH.
W moim przypadku tak byłoC:\Users\mhaagsma\AppData\Roaming\npm

Marvin
źródło
2

Prawidłowym sposobem zainstalowania gruntu jest uruchomienie tego polecenia:

npm install grunt -g

(Jeśli pojawi się komunikat o błędzie EACCESS, do polecenia powyżej wpisz „sudo”)

-g spowoduje, że npm zainstaluje pakiet globalnie, więc będziesz mógł go używać, kiedy tylko chcesz na bieżącej maszynie.

Adonis K. Kakoulidis
źródło
6
Zauważ, że jeśli to zrobisz (właśnie przetestowałem), gruntnadal zawiedzie, ponieważ pakiet grunt nie zawiera żadnych narzędzi wiersza poleceń. Trzeba grunt-cli.
Air
3
najwyraźniej potrzebujesz zarówno lokalnego, jak i globalnego
Adonis K. Kakoulidis
1
instalacja globalna (dla potrzeb wiersza poleceń), instalacja lokalna dla potrzeb typu „wymagaj (cokolwiek)”. Więc musisz zrobić jedno i drugie. Dzięki za pomoc!
prograhammer
1

Cześć, miałem ten problem na Macu i to, co zrobiłem, było

zainstalowany globalnie i prefiks z globalną ścieżką

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

teraz $ which grunt

powinien wyjść /usr/local/bin/grunt

Twoje zdrowie

Theva
źródło
0

Czasami trzeba, żeby npm install package_name -gto zadziałało.

dolny klucz
źródło
Dziękuję za odpowiedź. Znalazłem inną drogę do tego, co próbowałem zrobić.
AJP
@AJP czy możesz nam powiedzieć, jak to działa, zamiast po prostu powiedzieć nam, że to zrobiłeś? Dzięki.
rayfranco,
@rayfranco przepraszam, że po prostu się obejrzałem, poddając się ... Myślę, że próbowaliśmy stworzyć bibliotekę jquery-ui, więc właśnie ją pobraliśmy, ale teraz tak naprawdę nie pamiętam ... Przepraszam, wiem, że to nie jest przydatne , prześlij rozwiązanie z powrotem, gdy go znajdziesz. Wygląda na to, że wiele innych osób przeszło na tę stronę (bez powodzenia).
AJP
0

Innym rozwiązaniem jest usunięcie pakietu narzędziowego Ubuntu w moim przypadku użyłem:

sudo apt-get remove ruby-bundler 

To działało dla mnie.

Israel Morales
źródło
0

W systemie Windows część tajemnicy wydaje się polegać na tym, że npm instaluje plik Grunt.cmd. Na moim Linux-ie musiałem tylko uruchomić sudo npm install -g grunt-cli, na moim laptopie roboczym z systemem Windows 8 Grunt został umieszczony w katalogu „.npm-global”:% USER_HOME% \. Npm-global i ja musiał to dodać do Ścieżki.

Tak więc w systemie Windows moje kroki to:

  • npm install -g grunt-cli

  • dowiedzieć się, gdzie był do cholery grunt.cmd (Myślę, że dla niektórych jest w% USER_HOME% \ App_Data \ Roaming)

  • Dodano lokalizację do mojej zmiennej środowiskowej Path. Otworzyłem nowe polecenie cmd i polecenie chrząknięcia poszło dobrze.

MattC
źródło
0

W systemie Windows 10 Dodaj to do swojej ścieżki:

%APPDATA%\npm

Odnosi się to do folderu ~/AppData/Roaming/npm

[Zakłada, że ​​już uruchomiłeś npm install -g grunt-cli]

jomofrodo
źródło