Webpack, Gulp, Angular, Karma и Protractor работают вместе, чтобы дать толчок вашему следующему проекту.

Зачем вообще заморачиваться с Webpack?
Если вы разработчик AngularJS, у вас, вероятно, есть стек, похожий на этот:
— Angular.js (конечно)
— Gulp/Grunt (кстати. что вы предпочитаете?)
- Jasmine/Mocha, запущенный Karma для модульного тестирования
- Protractor для тестов E2E
- JSHint/JSLint
- Lodash/Underscore
- МЕНЬШЕ/SASS

Все покрыто. Сборка для разработки, производственная сборка, запуск тестов, обеспечение качества кода и т. д.

Так что же такое Webpack?

Это сборщик модулей. Я чувствую замешательство некоторых из вас. Так что же такое сборщик модулей? Это инструмент, который берет ваши исходные коды и упаковывает их в отдельные файлы, имеющие дело с зависимостями, аннотациями и минификациями одновременно.

Почему Webpack может быть полезен?

Потому что это как портал в мир npm со всем его богатством. Чтобы привести вам практический пример. Недавно я искал способ правильно обрабатывать новые ответы json с разделителями строк на клиенте. Я решил использовать библиотеку https://ndjson.org/, но не было клиентского JavaScript-решения. Вместо этого я использовал Webpack, который сделал тяжелую работу по доставке серверной библиотеки клиенту. Было очень легко, весело и продуктивно.

Если Webpack такой мощный, нужен ли мне Gulp/Grunt?

Хотя Webpack отлично подходит для объединения (сборки) производственного проекта, лично я предпочитаю комбинировать его с Gulp. Причина в четком разделении интересов. Я использую Webpack для связывания моего кода js с поставщиками, шаблонами html и стилями LESS, а для всего остального я использую Gulp, поэтому управляю своими активами, запускаю тесты, запускаю различные сборки, запускаю сервер разработки, отслеживаю изменения и т. д.

Как я могу начать с Webpack?

Я подготовил для вас готовый стартовый посевной проект. Вы можете получить его с GitHub: production-angular-webpack-gulp

Резюме

Плюсы:
+ полный доступ к модулям npm
+ использование одного и того же кода на клиенте и сервере
+ простое управление зависимостями
+ четкое разделение проблемы в процессе сборки
+ загрузка ресурсов в стиле require.js
+ одно место для оптимизации производства

Минусы:
— Большие проекты с поставщиками требуют индивидуальной настройки, иначе процесс сборки будет медленным.
— Требуется некоторое время, чтобы привыкнуть к синтаксису `require`

Вы используете вебпак. Если бы не вы? Позвольте мне знать в комментариях ниже.

Нужна профессиональная разработка AngularJS? Напишите мне.