Этого делать не обязательно. Всё что ставится глобально падает (если Windows) в
C:\Users\username\AppData\Roaming\npm\node_modules
, а так как в переменной среды окружения прописан путь к
C:\Users\username\AppData\Roaming\npm
, то это позволяет запустить команду gulp глобально из командной строки отовсюду, т.к. если откроете по вышеуказанному пути gulp.cmd в нём найдёте что-то типа:
"%~dp0\node.exe" "%~dp0\node_modules\gulp\bin\gulp.js" %*
А если поставить gulp локально, то в проект он устанавливается в
%project_path%/node_modules
. Чтобы запустить локальный gulp нужно будет написать в командной строке:
%project_path%/node_modules/.bin/gulp
и если зайти в эту папку можно найти такой же gulp.cmd
Итого: 1 способ по сути просто удобный и быстрый для запуска. 2 способ может пригодится если, например на целевом сервере, где может осуществлятся сборка, не будет возможности установить gulp глобально (не будет хватать прав), в этом случае нас и выручит локальная версия.
Также по правилам хорошего тона в проект записываются все зависимости, поэтому даже если вы на целевом сервере или у себя используете глобальную версию, необходимо указать, что проект использует такой пакет.
Кроме того, Вы можете по необходимости ставить любые пакеты глобально и использовать их по удобному псевдониму, а также, например, иметь 2 разные версии одного пакета