Пакет узла (Grunt) установлен, но недоступен

Я пытаюсь построить библиотека jQuery-ui github используя grunt, а после npm install Я все еще не могу запустить команду в соответствии с readme файл. Это просто дает 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 

Я запутался, что я пропустил, пожалуйста?

10 ответов


инструменты командной строки не включены в последнюю версию Grunt (0.4 на момент написания), вместо этого вам нужно установить их отдельно.

это хорошая идея, потому что это означает, что вы можете иметь разные версии Grunt работает на разных проектах, но по-прежнему использовать хороший краткий grunt команда для их запуска.

поэтому сначала установите инструменты grunt cli глобально:

npm install -g grunt-cli

(или sudo npm install -g grunt-cli ).

вы можете установить, что работа, набрав grunt --version

теперь вы можете установить текущую версию Grunt local в свой проект. Итак, из местоположения вашего проекта...

npm install grunt --save-dev

на save-dev переключатель строго не необходим, но это хорошая идея, потому что он будет отмечать хрюканье в своем пакете.раздел json devDependencies как модуль только для разработки.


добавить /usr/local/share/npm/bin/ на $PATH


если вы установили пакет Grunt, запустив npm install -g grunt и он все еще говорит No command 'grunt' found или grunt: command not found, быстрый и грязный способ получить эту работу-связать двоичные файлы узлов с вашим $PATH вручную.

на MacOSX / Linux вы можете добавить эту строку в свой ~/.bash_profile или .

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

вы, вероятно, следует заменить /usr/local/Cellar/node/HEAD/bin по пути, по которому можно найти двоичные файлы узлов.

если это и для меня это так все должно работать без этого, но по неизвестной причине связь кажется сломанной. Поскольку никто в IRC не мог сказать мне, почему это произошло, я нашел свой собственный способ заставить его (ворчание) работать.

PS: Это должно помочь вам сделать работу grunt, этот ответ не связан с jQuery-ui.

02/2013 обновление : вы должны взглянуть на @tom-p's answer что лучше объясняет, что происходит. Том дает нам настоящее решение вместо взлома вашего файла bashrc: оба должны работать, но вы должны попробовать установить grunt-cli первый.


в моем случае мне нужно изменить файл / usr / local/bin/grunt в строке 1 (Не делайте этого):

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

редактировать:

чтобы избежать проблем, я создал ссылку с именем "node", потому что многие другие программы все еще используют команду" node".

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

есть еще один способ запустить grunt в windows, не добавляя ничего глобально. Это случай, когда вам не нужно ничего делать с %PATH%

Если у вас установлен grunt и grunt-cli (без переключателя-g). Либо:

npm install grunt-cli
npm install grunt@0.4.5

или имея это в ваших пакетах.файл json, например:

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

вы можете вызвать grunt из вашей локальной установки по:

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

Это решение для тех, кто по каким-то причинам не хотите или не может играть с PATH или иметь что-то еще, что все время портит его, например, на агенте сборки.

изменить: Добавлены версии, поскольку grunt-cli работает с grunt > 0.3


на WIN7 мне пришлось вручную добавить путь к папке npm (которая содержит неуловимый файл "grunt") в переменную среды Windows PATH.
В моем случае это было C:\Users\mhaagsma\AppData\Roaming\npm


правильный способ установить grunt-запустить эту команду:

npm install grunt -g

(добавьте "sudo" к команде выше, если вы получите сообщение об ошибке EACCESS)

- g заставит npm установить пакет глобально, поэтому вы сможете использовать его, когда захотите, на своем текущем компьютере.


иногда нужно npm install package_name -g для его работы.


другое решение-удалить Ubuntu bundler в моем случае, я использовал:

sudo apt-get remove ruby-bundler 

это сработало для меня.


в Windows часть тайны, по-видимому, находится там, где npm устанавливает Grunt.файл cmd. В то время как на моем Linux box мне просто нужно было запустить sudo npm install-g grunt-cli, на моем рабочем ноутбуке Windows 8, Grunt был помещен в".npm-глобальный каталог: %USER_HOME%\.npm-global, и я должен был добавить это к пути.

Так на Windows мои шаги были:

  • npm install-g grunt-cli

  • выяснить, где, черт возьми грунт.УМК был (я думаю для некоторые из них находятся в %USER_HOME%\App_Data\Roaming)

  • добавлено местоположение в переменную среды my Path. Открыл новое приглашение cmd, и команда grunt сработала нормально.