Почему мы должны установить gulp глобально и локально?
2 Инструкции о залпом скажите, что мне нужно установить gulp сначала глобально (с флагом-g), а затем еще раз локально. Зачем мне это нужно?
6 ответов:
при установке инструмента глобально он должен использоваться Пользователем в качестве утилиты командной строки в любом месте, в том числе за пределами проектов узлов. Глобальные установки для проекта узла плохо потому что они делают развертывания более сложных.
npm 5.2+
The
npxутилита в комплекте сnpm5.2решает эту проблему. С его помощью вы можете вызывать локально установленные утилиты, такие как глобально установленные утилиты (но вы должны начать команда сnpx). Например, если вы хотите вызвать локальнуюeslint, вы можете сделать:npx eslint .npm
при использовании
scriptполе вашего пакета.json,npmпоискnode_modulesдля инструмента, а также глобально установленных модулей, поэтому достаточно локальной установки.Итак, если вы довольны (в вашем пакете.json):
"devDependencies": { "gulp": "3.5.2" } "scripts": { "test": "gulp test" }etc. и работает с
npm run testтогда вам не нужна глобальная установка совсем.оба метода полезны для получения людей, настроенных с вашим проектом, так как
sudoне требуется. Это также означает, чтоgulpбудет обновляться, когда версия наткнулся в пакете.json, поэтому все будут использовать одну и ту же версию gulp при разработке с вашим проектом.дополнение:
похоже, что gulp имеет какое-то необычное поведение при использовании во всем мире. При использовании в качестве глобальной установки gulp ищет локально установленный gulp для передачи контроль над собой. Поэтому глобальная установка gulp требует локальной установки gulp для работы. Ответ выше все же стоит. Локальные установки всегда предпочтительнее глобальных.
TLDR; вот почему:
причина, по которой это работает, потому что
gulpпытается запустить свойgulpfile.jsиспользуя локально установленную версиюgulpсм. здесь. Следовательно, причина глобальная и локальная установка залпом.по существу, когда вы устанавливаете
gulpлокально скрипт не находится в вашемPATHи поэтому вы не можете просто ввестиgulpи ожидайте, что оболочка найдет команду. Установив его глобально элементgulpсценарий попадает в вашPATHпотому что глобальный скорее всего на вашем пути.чтобы уважать ваши локальные зависимости, хотя,
gulpбудет использовать локально установленную версию самого себя для запускаgulpfile.js.
на вопрос "Почему мы должны установить gulp глобально и локально? " можно разбить на следующие два вопроса:
зачем мне нужно устанавливать gulp локально, если я уже установил его глобально?
Почему мне нужно установить gulp глобально, если я уже установил его локально?
несколько других предоставили отличные ответы на тезисы вопросы по отдельности, но я подумал, что было бы полезно объединить информацию в единый ответ.
зачем мне нужно устанавливать gulp локально, если я уже установил его глобально?
обоснование для установки gulp локально состоит из нескольких причин:
- включение зависимостей вашего проекта локально гарантирует, что используемая версия gulp (или других зависимостей) является первоначально предназначенной версия.
- узел не рассматривает глобальные модули по умолчанию при использовании require () (который вам нужно включить gulp в свой скрипт). В конечном счете, это происходит потому, что путь к глобальным модулям не добавляется в NODE_PATH по умолчанию.
- согласно команде разработчиков узла, локальные модули загружаются быстрее. Я не могу сказать, почему это так, но это, казалось бы, более важно для использования узла в производстве (т. е. зависимости времени выполнения), чем в разработке (т. е. зависимости dev). Я полагаю, что это законная причина, поскольку некоторые могут заботиться о любом незначительном преимуществе скорости, полученном при загрузке локальных и глобальных модулей, но не стесняйтесь поднимать бровь по этой причине.
зачем мне нужно устанавливать gulp глобально, если я уже установил его локально?
- обоснование для установки gulp глобально-это просто удобство автоматического поиска исполняемого файла gulp в вашей системе путь.
чтобы избежать установки локально, вы можете использовать
npm link [package], но команда link, а такжеinstall --globalкоманда, кажется, не поддерживают--save-devопция, которая означает, что нет простого способа установить gulp глобально, а затем легко добавить любую версию, которая находится в вашем локальном пакете.файл json.В конечном счете, я считаю, что имеет больше смысла иметь возможность использовать глобальные модули, чтобы избежать необходимости дублировать установку общих инструментов во всех ваших проектах, особенно в случае инструментов разработки, таких как grunt, gulp, jshint и т. д. К сожалению, кажется, что вы в конечном итоге боретесь с инструментами немного, когда вы идете против зерна.
технически вам не нужно устанавливать его глобально, если
node_modulesпапка в вашей локальной установке находится в вашемPATH. Как правило, это не очень хорошая идея.или
npm testссылкиgulpзатем вы можете просто ввестиnpm testи это будет работать местный глоток.Я никогда не устанавливал глоток глобально - я думаю, что это плохой тон.
Я не уверен, что наша проблема была напрямую связана с установкой gulp только локально. Но мы должны были установить кучу зависимостей сами. Это приводит к "огромному" пакету.json и мы не уверены, действительно ли это отличная идея установить gulp только локально. Мы должны были сделать это из-за нашей среды сборки. Но я бы не рекомендовал устанавливать gulp не глобально, если это не абсолютно необходимо. Мы столкнулись с аналогичными проблемами, как описано в следующем блоге
ни одна из этих проблем не возникает для любого из наших разработчиков на своих локальных машинах, потому что все они установлены gulp глобально. На системе сборки у нас были описанные проблемы. Если кто-то заинтересован, я мог бы погрузиться глубже в эту проблему. Но сейчас я просто хотел упомянуть, что это не простой способ установить gulp только локально.
Comments