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


187

Я намагаюся створити бібліотеку github jquery-ui за допомогою 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 

Я розгублений, чого я пропускаю, будь ласка?

Відповіді:


412

Інструменти командного рядка не входять до останньої версії Grunt (0,4 під час написання), замість цього вам потрібно встановити їх окремо.

Це гарна ідея, оскільки це означає, що ви можете мати різні версії Grunt, що працюють на різних проектах, але все ж використовувати приємну лаконічну gruntкоманду для їх запуску.

Тож спочатку встановіть інструменти grunt cli в усьому світі:

npm install -g grunt-cli

(або можливо sudo npm install -g grunt-cli).

Ви можете встановити, що це працює, набравши текст grunt --version

Тепер ви можете встановити поточну версію локального Grunt до свого проекту. Тож з місця вашого проекту ...

npm install grunt --save-dev

save-devВимикач не є строго необхідним , але це хороша ідея , тому що це буде означати хрюкати в package.json devDependencies розділі як розвиток тільки модуль.


5
Не вдалося знайти шлях до папки в системних змінних Path після запуску npm install -g
grunt

10
довелося бігати за допомогою судо
Філ Хадсон

2
Якщо це не допоможе вам, спробуйте видалити grunt і grunt-cli, а потім зробіть це ще раз. Для мене працює лише тоді, коли я використовую sudoСпасибі Томе!
Термато

Примітка: Якщо вам доведеться використовувати sudo, це пов'язано з налаштуванням вузла. Це не ідеально, але може бути виправлено. sindresorhus пропонує один із способів . Я вважаю за краще використовувати NVM (менеджер версій вузла)
Том П

1
Якщо ви тут, і ви натискаєте node not foundпісля запуску вищевказаної команди, і ви використовували диспетчер пакунків для встановлення вузла, вам також потрібно буде посиланняsudo ln -s /usr/local/bin/nodejs /usr/local/bin/node
anon58192932


24

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

У MacOSX / Linux ви можете додати цю лінію до свого ~/.bash_profile~/.bashrc файл чи файл.

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

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

Якщо це швидко і брудно для мене, це тому, що все повинно працювати, не роблячи цього, але з невідомих причин посилання здається порушеним. Оскільки ніхто з IRC не міг сказати мені, чому це сталося, я знайшов власний спосіб змусити його (бурчати) працювати.

PS: Це повинно допомогти вам зробити бурхливі роботи, ця відповідь не пов'язана з jquery-ui.

Оновлення 02/2013 : Ви повинні подивитися на відповідь @ tom-p, яка краще пояснює, що відбувається. Том пропонує нам справжнє рішення замість того, щоб зламати ваш файл bashrc: обидва повинні працювати, але спершу слід спробувати встановитиgrunt-cli .


Дивіться іншу відповідь - це дає пояснення.
Югал Джиндл

Чи можете ви уточнити, який тут льох? Це щось конкретно для вас / вашої установки?
Брайан C

12

У моєму випадку мені потрібно змінити файл / 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

6
Конструктивна анкета, щоб відмовити когось від редагування упакованих файлів вручну. Для своєї проблеми вам потрібно apt-get install nodejs-legacy.
Повітря

Ваша пропозиція - одна з найновіших пропозицій, яка працювала на моїй новій установці Debian Jessie.
Гельцгейт

Ok Air, але я використовую OSX, я спробую щось таке, якbrew install nodejs-leacy
Едгард Ліл,

@Air спасибі, що це була моя проблема. Після виконання всіх попередніх кроків не вдалося розпізнати бурчання .
kemicofa ghost

11

Є ще один спосіб запустити грухт у 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


Хтось, хто використовує докер, може вважати його корисним.
Даніель Кмак

11

У WIN7 мені довелося вручну додати шлях до папки npm (яка містить невловимий файл «grunt») до змінної середовища Windows PATH.
У моєму випадку це булоC:\Users\mhaagsma\AppData\Roaming\npm


2

Правильний спосіб встановити grunt - це виконати цю команду:

npm install grunt -g

(Додайте "sudo" до команди вище, якщо ви отримаєте повідомлення про помилку EACCESS)

-g змусить npm встановити пакунок у всьому світі, тому ви зможете використовувати його будь-коли, коли захочете у вашій поточній машині.


6
Зауважте, що якщо ви це зробите (я щойно тестував), gruntвсе одно не вдасться, оскільки пакет grunt не містить ніяких інструментів командного рядка. Вам потрібно grunt-cli.
Повітря

3
Мабуть, вам потрібні і локальні, і глобальні
Адоніс К. Какулідіс

1
глобальна установка (для потреб командного рядка), локальна установка для потреб типу "вимагаю (що завгодно)". Тому вам потрібно зробити і те, і інше. Спасибі за вашу допомогу!
програмамер

1

Привіт, у мене була проблема на mac, і те, що я зробив

встановлено глобально та префікс із глобальним шляхом

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

зараз $ which grunt

слід покласти /usr/local/bin/grunt

Ура


0

Іноді доводиться npm install package_name -gдля цього працювати.


Дякую за відповідь. Я знайшов інший спосіб, що намагався зробити.
AJP

@AJP, чи можете ви сказати нам, як ви працюєте, замість того, щоб сказати, що ви зробили? Дякую.
rayfranco

@rayfranco Вибачте, я в основному обійшов це, відмовившись ... Я думаю, що ми намагалися зробити бібліотеку jquery-ui, можливо, тому ми просто завантажили її, не можу зараз пам'ятати, хоча ... Вибачте, я знаю, що це не корисно , будь ласка, опублікуйте рішення, коли знайдете його. Схоже, що багато інших зайшли на цю сторінку (без жодного успіху).
AJP

0

Іншим рішенням є видалення пакету ubuntu в моєму випадку, я використовував:

sudo apt-get remove ruby-bundler 

Це працювало для мене.


0

У 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

  • з'ясуйте, де був чорт grunt.cmd (я думаю, для деяких він у% USER_HOME% \ App_Data \ Roaming)

  • Додано розташування до моєї змінної середовища Path. Відкрив нову підказку cmd і команда бурчала добре.


0

У Windows 10 Додайте це до свого шляху:

%APPDATA%\npm

Це посилання на папку ~/AppData/Roaming/npm

[Припускає, що ви вже запущені npm install -g grunt-cli]

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.