На что годятся npm, bower, gulp, Yeoman и grunt?
Я разработчик бэкенда, и меня немного смущают npm, bower, gulp, grunt и Yeoman. Всякий раз, когда я спрашиваю кого - то, какова их цель, ответ, как правило, сводится к менеджеру зависимостей-для всех них. Конечно, нам не нужны четыре разных инструмента, которые все делают одно и то же?
Может кто-нибудь объяснить, что каждый из них хорош для в как можно меньшем количестве предложений - Если возможно, только один инструмент, используя язык пятилетнего ребенка (с навыками развития) может понимаешь?
Например:
- SVN хранит, управляет и отслеживает изменения в нашем исходном коде
В прошлом я использовал maven, Jenkins, nexus и ant; может быть, вы могли бы сравнить инструменты выше с этими?
Также не стесняйтесь добавлять другие интерфейсные инструменты в список.
Вот что я выяснил до сих пор - не уверен, что это правильно, хотя:
- bower диспетчер зависимостей для интерфейсных библиотек разработки / JS, использует плоский список зависимостей
- npm диспетчер зависимостей для узла.JS server, может разрешать транзитивные зависимости / деревья зависимостей
- grunt выполняет задачи, очень похожие на Дженкинса, но локальность в командной строке
- Йомен обеспечил строительные леса, то есть каркасные проекты
- глоток то же, что и ворчание, но написано только в js
- узел.JS сервер для приложений js?
- git децентрализованный SCM/VCS, аналог svn/cvs
Я близок? :)
4 ответа:
Вы близки! Добро пожаловать на JavaScript:)
Позвольте мне дать вам краткое описание и одну особенность, с которой большинство разработчиков проводят некоторое время.Бауэр Фокусируется на пакетах, которые используются в браузере. Каждый
bower install <packagename>
указывает ровно на один файл, который должен быть включен (можно загрузить больше). Из-за успеха webpack, browserify и babel он в основном устарел как первоклассный менеджер зависимостей.Npm Исторически фокусируется на коде NodeJS, но имеет свергнутый Бауэр для браузерных модулей. Не позволяйте никому обмануть вас: НПМ огромен. NPM также загружает много файлов в ваш проект, и свежая установка npm-это всегда хороший повод заварить новую чашку кофе. NPM прост в использовании, но может сломать ваше приложение при изменении среды из-за свободного способа ссылки на версии и произвольности публикации модулей. Исследование термоусадочной пленки и
npm install --save-exact
Ворчание Облегчает автоматизацию задач. Глотки старше и несколько более вялые брат. В JavaScript сообщества использовали, чтобы болтаться с ним в 2014 году очень много. Grunt уже считается наследием в некоторых местах, но все еще есть большое количество действительно мощной автоматизации, которую можно найти. Конфигурация может быть кошмаром для больших случаев использования. для этого есть модуль ворчания.
Глоток Делает то же самое, что и ворчание, но быстрее.
Npm run-script Возможно, вам вообще не нужны бегуны с заданиями. Скрипты NodeJS действительно легко писать, так что большинство вариантов использования позволяют настроить рабочий процесс автоматизации задач. Запускайте сценарии из контекста вашего пакета.JSON-файл с использованием npm run-script
Webpack Не пропустите webpack. Особенно если вы чувствуете себя потерянным на многих способах написания JavaScript в когерентный модульный код. Пакеты Webpack .js файлы в модули и делает это великолепно. Webpack обладает высокой степенью расширения и предлагает хорошую среду разработки: webpack-dev-server Использование в сочетании с babel для лучшего возможного опыта JavaScript на сегодняшний день.
Йомен Подмости. Чрезвычайно ценен для команд с различным опытом работы, поскольку обеспечивает управляемую общую основу для архитектуры ваших проектов. Есть даже леса для лесов.
Итак, поскольку у вас есть хорошее представление о том, что такое каждый из них, я дам вам простой рабочий процесс.
- я использую Йомена, чтобы построить основной скелет.
- я использую узел в качестве среды выполнения для моего приложения. т.е.. run
node appname
- я использую npm для установки модулей узла, которые помогают мне писать приложение в узле
- мне может понадобиться какой-то компонент из bower, например, интерфейсные библиотеки, поэтому используйте bower для их извлечения.
- Теперь сделаем некоторые повторяющиеся задачи, я будет использовать ворчание или глоток, чтобы написать некоторые задачи. Поэтому каждый раз, когда я хочу повторить это, скажем, минимизировать мои файлы js, я называю grunt/gulp и заставляю их делать это. Разница, которую вы спросите, глоток основан на потоке, а ворчание-на задаче.
- я делаю контроль версий с помощью git , чтобы отслеживать изменения
Gulp vs Grunt: Gulp обеспечивает большую гибкость при автоматизации задач, Grunt поставляется встроенным с большим количеством функциональных возможностей в соответствии с общепринятыми методами разработки. Есть два основных различия между ворчанием и глотанием:
- Grunt фокусируется на конфигурации, а Gulp - на коде
- Grunt был построен вокруг набора встроенных и часто используемых задач, в то время как Gulp пришел с идеей принудительного применения ничего, но как микрозадачи, разработанные сообществом, должны соединяться друг другу читайте здесь
- NodeJS: это неблокирующий серверный язык сценариев. Это означает, что операции не будут блокировать дальнейшее выполнение до завершения текущей операции.
Git: как вы упомянули, это инструмент SCM, широко используемый. В соответствии с GitHub docs он отличается от других инструментов SCM, поскольку данные никогда не удаляются.
Git считает хранимые данные набором слепков небольшой файловая система. Каждый раз, когда вы фиксируете или сохраняете состояние вашего проекта в Git, он в основном делает снимок того, как все ваши файлы выглядят в данный момент, и сохраняет ссылку на этот снимок.
Когда вы выполняете действия в Git, почти все они только добавляют данные в базу данных Git. Очень трудно заставить систему сделать что-либо, что не является неисправимым, или заставить ее стереть данные каким-либо образом. Как и в любом VCS, вы можете потерять или испортить изменения, которые вы еще не совершили; но после того, как вы зафиксируйте моментальный снимок в Git, его очень трудно потерять, особенно если вы регулярно толкаете свою базу данных в другой репозиторий.
- Bower vs NPM: Bower и NPM-это менеджеры зависимостей, но модули Bower предназначены для разработки переднего плана. NPM-это огромная коллекция модулей, которые будут использоваться с серверной частью NodeJS. Этот так ответ покрывает его лучше
Я добавил некоторые детали:
Npm - это менеджер пакетов для javascript, npm-это экосистема пакетов nodejs, но он может использоваться только для интерфейсных проектов.
Ворчание & gulp полезны для разделения и автоматизации таких задач, как минификация, компиляция, модульное тестирование в командной строке, это более легкое решение, чем (например) visual studio, поскольку процесс является только отдельной (и обычно облегченной) командной строкой/процессом.
Относительно различия между глотком, grunt и bower уже есть билет: В чем разница между Grunt, Gulp.Джей-ЭС и Бауэр? Почему и когда их использовать?
Nodejs-это скорее javascriptruntime . Узел.js позволяет создавать веб-серверы и сетевые инструменты с использованием js и набора "модулей", которые обрабатывают различные основные функциональные возможности и другие основные функции. Источник
Этот билет возобновляет различия между Git и Subversion: Почему Git лучше, чем Subversion?