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