Почему grunt не работает при глобальной установке?

#javascript #linux #node.js #gruntjs

#javascript #linux #node.js #gruntjs

Вопрос:

Я установил grunt и grunt-cli глобально использую sudo npm install -g grunt... команды.

Моя рабочая папка — «/opt / web», пожалуйста, не спрашивайте почему 🙂

Проверка версии grunt внутри `/ opt / web» работает:

 $ grunt --version
grunt-cli v0.1.13
  

Однако на самом деле я не могу запустить оттуда задачу grunt:

 $ grunt
grunt-cli: The grunt command line interface. (v0.1.13)

Fatal error: Unable to find local grunt.

If you're seeing this message, either a Gruntfile wasn't found or grunt
hasn't been installed locally to your project.
  

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

Такое поведение кажется мне странным.

Мой вопрос заключается в следующем:

Это ошибка или особенность? Является ли это по замыслу, что grunt хочет работать только с локально установленными вещами?

Ответ №1:

Это сделано специально. См. grunt-cli readme.

CLI ничего не делает, кроме поиска и запуска локальной копии grunt.

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

На сайте узла также есть хорошее сообщение в блоге, в котором немного больше говорится о местах установки модулей.

Комментарии:

1. Спасибо! Я понял это с помощью этого поста .