Почему мы должны установить gulp глобально и локально?



2 Инструкции о залпом скажите, что мне нужно установить gulp сначала глобально (с флагом-g), а затем еще раз локально. Зачем мне это нужно?

664   6  

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 на месте

npm link gulp

на вопрос "Почему мы должны установить gulp глобально и локально? " можно разбить на следующие два вопроса:

  1. зачем мне нужно устанавливать gulp локально, если я уже установил его глобально?

  2. Почему мне нужно установить gulp глобально, если я уже установил его локально?

несколько других предоставили отличные ответы на тезисы вопросы по отдельности, но я подумал, что было бы полезно объединить информацию в единый ответ.

зачем мне нужно устанавливать gulp локально, если я уже установил его глобально?

обоснование для установки gulp локально состоит из нескольких причин:

  1. включение зависимостей вашего проекта локально гарантирует, что используемая версия gulp (или других зависимостей) является первоначально предназначенной версия.
  2. узел не рассматривает глобальные модули по умолчанию при использовании require () (который вам нужно включить gulp в свой скрипт). В конечном счете, это происходит потому, что путь к глобальным модулям не добавляется в NODE_PATH по умолчанию.
  3. согласно команде разработчиков узла, локальные модули загружаются быстрее. Я не могу сказать, почему это так, но это, казалось бы, более важно для использования узла в производстве (т. е. зависимости времени выполнения), чем в разработке (т. е. зависимости dev). Я полагаю, что это законная причина, поскольку некоторые могут заботиться о любом незначительном преимуществе скорости, полученном при загрузке локальных и глобальных модулей, но не стесняйтесь поднимать бровь по этой причине.

зачем мне нужно устанавливать gulp глобально, если я уже установил его локально?

  1. обоснование для установки 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

    Ничего не найдено.