Я пытаюсь обобщить свои знания о самых популярных менеджерах пакетов пакетов, поставщиках пакетов и задачах. Пожалуйста, поправьте меня, если я ошибаюсь:
-
npm
иbower
- менеджеры пакетов. Они просто загружают зависимости и не знают, как создавать проекты самостоятельно. То, что они знают, это вызватьwebpack
/gulp
/grunt
после выбора всех зависимостей. -
bower
похож наnpm
, но строит сплющенные деревья зависимостей (в отличие отnpm
, которые делают это рекурсивно). Значениеnpm
выбирает зависимости для каждой зависимости (может получать одно и то же несколько раз), аbower
ожидает, что вы вручную включите субзависимости. Иногдаbower
иnpm
используются вместе для интерфейсных и back-end соответственно (поскольку каждый мегабайт может иметь значение на интерфейсе). -
grunt
иgulp
- это бегуны задач для автоматизации всего, что может быть автоматизировано (т.е. скомпилировать CSS/Sass, оптимизировать изображения, сделать связку и минимизировать/перетащить ее). -
grunt
vs.gulp
(походит наmaven
vs.gradle
или конфигурацию против кода). Grunt основан на настройке отдельных независимых задач, каждая задача открывает/обрабатывает/закрывает файл. Gulp требует меньшего количества кода и основывается на потоках Node, что позволяет ему строить цепи цепей (без повторного открытия одного и того же файла) и делает это быстрее. -
webpack
(webpack-dev-server
) - для меня это задача с горячей перезагрузкой изменений, которая позволяет забыть обо всех наблюдателях JS/CSS. -
npm
/bower
+ плагины могут заменять задачи. Их способности часто пересекаются, поэтому есть разные последствия, если вам нужно использоватьgulp
/grunt
поверх плагиновnpm
+. Но бегуны задач, безусловно, лучше подходят для сложных задач (например, "на каждом сборке создают пакет, переходят с ES6 на ES5, запускают его во всех эмуляторах браузеров, делают скриншоты и развертывают в Dropbox через ftp" ). -
browserify
позволяет упаковывать модули Node для браузеров.browserify
vsnode
require
на самом деле AMD против CommonJS.
Вопросы:
- Что такое
webpack
иwebpack-dev-server
? Официальная документация говорит, что это модуль, но для меня это просто бегун. Какая разница? - Где бы вы использовали
browserify
? Разве мы не можем сделать то же самое с импорта node/ES6? - Когда вы используете
gulp
/grunt
поверхnpm
+ плагинов? - Приведите примеры, когда вам нужно использовать комбинацию