Пакет узла (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 как модуль только для разработки.
если вы установили пакет 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 установить пакет глобально, поэтому вы сможете использовать его, когда захотите, на своем текущем компьютере.
другое решение-удалить 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 сработала нормально.