Я вижу людей, использующих gulp с webpack. Но тогда я читаю webpack может заменить глоток? Я полностью запутался здесь ... кто-то может объяснить?
ОБНОВИТЬ
в конце я начал с глотком. Я был новичком в современном интерфейсе и просто хотел быстро начать работу. Теперь, когда у меня уже достаточно года мокрые ноги, я готов перейти к веб-упаковке. Я предлагаю тот же маршрут для людей, которые начинают в той же обуви. Не говоря, что вы не можете попробовать веб-пакет, а просто говорите, если вам кажется, что сначала сложно начать с глотка ... в этом нет ничего плохого.
Если вы не хотите глотать, да, есть хрюканье, но вы также можете просто указать команды в вашем package.json и вызывать их из командной строки без запуска задач, чтобы просто начать работу. Например:
"scripts": {
"babel": "babel src -d build",
"browserify": "browserify build/client/app.js -o dist/client/scripts/app.bundle.js",
"build": "npm run clean && npm run babel && npm run prepare && npm run browserify",
"clean": "rm -rf build && rm -rf dist",
"copy:server": "cp build/server.js dist/server.js",
"copy:index": "cp src/client/index.html dist/client/index.html",
"copy": "npm run copy:server && npm run copy:index",
"prepare": "mkdir -p dist/client/scripts/ && npm run copy",
"start": "node dist/server"
},
Ответы:
Этот ответ может помочь. Runner (Gulp, Grunt и т. Д.) И Bundlers (Webpack, Browserify). Зачем использовать вместе?
... и вот пример использования веб-пакета из задачи gulp. Это делает еще один шаг и предполагает, что ваша конфигурация webpack написана на es6.
Я думаю, вы обнаружите, что, поскольку ваше приложение усложняется, вы можете захотеть использовать gulp с задачей webpack, как в примере выше. Это позволяет вам делать еще несколько интересных вещей в вашей сборке, чего действительно не делают загрузчики и плагины веб-пакетов, т.е. создание выходных каталогов, запуск серверов и т. д. Если быть кратким, веб-пакет на самом деле может делать эти вещи, но вы можете счесть их ограниченными для ваших долгосрочных потребностей. Одним из самых больших преимуществ, которые вы получаете от gulp -> webpack, является то, что вы можете настроить конфигурацию webpack для различных сред и заставить gulp выполнить правильную задачу в нужное время. Это действительно ваше дело, но нет ничего плохого в запуске webpack из gulp, на самом деле есть несколько довольно интересных примеров того, как это сделать.,
источник
Сценарии NPM могут делать то же самое, что и gulp, но примерно в 50 раз меньше кода. Фактически, без кода, только аргументы командной строки.
Например, описанный вами вариант использования, в котором вы хотите иметь разный код для разных сред.
С Webpack + NPM Scripts это так просто:
Теперь вы просто поддерживаете два сценария конфигурации веб-пакета, один для режима разработки
webpack.development.js
и один для рабочего режимаwebpack.production.js
. Я также используюwebpack.common.js
конфигурацию webpack, которая используется во всех средах, и использую webpackMerge для их объединения.Из-за крутости сценариев NPM он позволяет легко создавать цепочки, подобно тому, как gulp использует Streams / pipe.
В приведенном выше примере, чтобы построить для разработки, вы просто перейдете к командной строке и выполните
npm run build:dev
.prebuild:dev
,build:dev
,postbuild:dev
.pre
Иpost
префиксы сказать НПМ , которые для того , чтобы выполнить в.Если вы заметили, что с помощью скриптов Webpack + NPM вы можете запускать нативные программы, например
rimraf
, вместо gulp-wrapper для нативной программы, такой какgulp-rimraf
. Вы также можете запускать собственные файлы Windows .exe, как я это делал здесь,elevate.exe
или собственные файлы * nix в Linux или Mac.Попробуйте сделать то же самое с глотком. Вам придется подождать, пока кто-нибудь придет и напишет gulp-wrapper для нативной программы, которую вы хотите использовать. Кроме того, вам, вероятно, понадобится написать сложный код, подобный следующему: (взят прямо из репозитория angular2-seed )
Код разработки Gulp
Код производства Gulp
Фактический код залпа гораздо сложнее, поскольку это только 2 из нескольких десятков файлов залога в репо.
Итак, какой из них вам легче?
По моему мнению, сценарии NPM намного превосходят по эффективности и простоте использования, и все разработчики должны подумать об их использовании в своем рабочем процессе, поскольку это значительно экономит время.
ОБНОВИТЬ
Я столкнулся с одним сценарием, в котором я хотел использовать Gulp в сочетании со скриптами NPM и Webpack.
Когда мне нужно выполнить удаленную отладку, например, на устройстве iPad или Android, мне нужно запустить дополнительные серверы. В прошлом я запускал все серверы как отдельные процессы из IntelliJ IDEA (или Webstorm), что легко с «сложной» конфигурацией выполнения. Но если мне нужно остановить и перезапустить их, было утомительно закрывать 5 разных вкладок сервера, плюс вывод распределялся по разным окнам.
Одним из преимуществ gulp является то, что он может объединять весь вывод отдельных независимых процессов в одно консольное окно, которое становится родительским для всех дочерних серверов.
Поэтому я создал очень простую задачу gulp, которая просто запускает мои сценарии NPM или команды напрямую, поэтому весь вывод отображается в одном окне, и я могу легко завершить все 5 серверов одновременно, закрыв окно задачи gulp.
Gulp.js
На мой взгляд, все еще достаточно кода для запуска 5 задач, но он работает для этой цели. Один caveate является то , что ,
gulp-shell
кажется, не запускать некоторые команды правильно, напримерios-webkit-debug-proxy
. Поэтому мне пришлось создать сценарий NPM, который просто выполняет ту же команду, и затем он работает.Поэтому я в основном использую сценарии NPM для всех своих задач, но иногда, когда мне нужно запустить сразу несколько серверов, я запускаю задачу Gulp, чтобы помочь. Выберите правильный инструмент для правильной работы.
ОБНОВЛЕНИЕ 2
Теперь я использую скрипт, который вызывается одновременно, который выполняет ту же функцию, что и описанная выше задача gulp. Он запускает несколько сценариев CLI параллельно и направляет их все в одно и то же окно консоли, и его очень просто использовать. Еще раз, код не требуется (ну, код находится внутри node_module для одновременного использования, но вам не нужно беспокоиться об этом)
При этом все 5 скриптов запускаются параллельно по одному терминалу. Потрясающие! Так что в этом пункте я редко использую gulp, поскольку существует так много сценариев cli для выполнения одних и тех же задач без кода.
Я предлагаю вам прочитать эти статьи, которые сравнивают их в глубине.
источник
npm-run-all
в течение нескольких месяцев, но я даже не думал об использовании-p
параллельного флага! Я попробую это на этой неделеЯ использовал оба варианта в разных проектах.
Вот один шаблонный , что я поставил вместе , используя
gulp
сwebpack
- https://github.com/iroy2000/react-reflux-boilerplate-with-webpack .У меня есть другой проект, используемый только
webpack
сnpm tasks
.И они оба работают совершенно нормально. И я думаю, что это сводится к тому, насколько сложна ваша задача, и какой контроль вы хотите иметь в своей конфигурации.
Например, если вы просто задачи, скажем
dev
,build
,test
... и т.д. (что очень стандарт), вы совершенно нормально только с простымwebpack
сnpm tasks
.Но если у вас очень сложный рабочий процесс и вы хотите лучше контролировать свою конфигурацию (потому что это кодирование), вы можете пойти по пути gulp.
Но из моего опыта, экосистема веб-пакетов предоставляет более чем достаточно плагинов и загрузчиков, которые мне понадобятся, и поэтому я люблю использовать минимальный подход, если только вы не можете сделать что-то только в gulp. А также, это облегчит вашу настройку, если в вашей системе будет на одну вещь меньше.
И много раз, в настоящее время, я вижу, что люди фактически заменяют
gulp and browsify
все вместеwebpack
одним.источник
Концепции Gulp и Webpack совершенно разные. Вы говорите Gulp, как пошагово собирать интерфейсный код, но вы говорите Webpack, что вы хотите через файл конфигурации.
Вот небольшая статья (прочитано 5 минут), которую я написал, объясняя мое понимание различий: https://medium.com/@Maokai/compile-the-front-end-from-gulp-to-webpack-c45671ad87fe
Наша компания перешла из Gulp в Webpack в прошлом году. Хотя это заняло некоторое время, мы выяснили, как перенести все, что мы делали в Gulp, на Webpack. Поэтому для нас все, что мы делали в Gulp, мы также можем делать через Webpack, но не наоборот.
На сегодняшний день я бы рекомендовал просто использовать Webpack и избегать сочетания Gulp и Webpack, чтобы вам и вашей команде не нужно было изучать и поддерживать оба, особенно потому, что они требуют очень разных подходов.
источник
Честно говоря, я думаю, что лучше всего использовать оба.
Мне все еще нужно найти достойное решение для упаковки CSS с веб-пакетом, и до сих пор я счастлив использовать gulp для CSS и веб-пакет для javascript.
Я также использую
npm
сценарии как @Tetradev, как описано. Тем более что я пользуюсьVisual Studio
, и хотяNPM Task runner
довольно надеженWebpack Task Runner
, довольно глючит .источник