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

Я пытаюсь создать github jquery-ui library с помощью grunt, но после запуска npm install я все еще не могу выполнить команду в соответствии с файл readme. Он просто дает No command 'grunt' found:

[email protected]:~/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
[email protected]:~/Documents/projects/ad2/lib/jquery-ui$ npm ls
[email protected] /home/james/Documents/projects/ad2/lib/jquery-ui
├─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ └─┬ [email protected] 
│ │   └── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ └─┬ [email protected] 
│ │   └── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ └─┬ [email protected] 
│ │   ├── [email protected] 
│ │   ├── [email protected] 
│ │   └── [email protected] 
│ ├─┬ [email protected] 
│ │ └── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ └─┬ [email protected] 
│ │   ├── [email protected] 
│ │   ├─┬ [email protected] 
│ │   │ └── [email protected] 
│ │   └── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
├── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
├── [email protected] 
├── [email protected] 
├─┬ [email protected] 
│ └── [email protected] 
└─┬ [email protected] 
  └── [email protected] 

Я смущен, что я пропущу, пожалуйста?

Ответ 1

Инструменты командной строки не включены в последнюю версию 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 не является строго необходимым, но является хорошей идеей, поскольку он будет отмечать grunt в разделе package.json devDependencies как только модуль разработки.

Ответ 2

Добавьте /usr/local/share/npm/bin/ в свой $PATH

Ответ 3

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

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

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

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

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

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

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

Ответ 4

В моем случае мне нужно изменить файл /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

Ответ 5

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

Ответ 6

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

если у вас есть grunt и grunt-cli (без ключа -g). Либо:

npm install grunt-cli
npm install [email protected]

Или имея это в вашем файле package.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

Ответ 7

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

npm install grunt -g

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

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

Ответ 8

Иногда вам нужно npm install package_name -g работать.

Ответ 9

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

sudo apt-get remove ruby-bundler 

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

Ответ 10

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

Итак, в Windows мои шаги были:

  • npm install -g grunt-cli

  • выяснить, где heck grunt.cmd(я думаю, для некоторых это в% USER_HOME%\App_Data\Roaming)

  • Добавлено место для переменной окружения Path. Открыл новую подсказку cmd и команда grunt работала нормально.