18. Задачи
• Все задачи имеют общую структуру
(Имеют атрибуты options, src, dest)
• В задачах могут быть цели (подзадачи)
• В качестве значения атрибутов src и dest можно указывать
как отдельные имена файлов, так списки имен, пользуясь
при этом шаблонами
• Задачи можно объединять с другими задачами
20. Plugins
Grunt всего лишь предоставляет простое API для запуска и
остановки задач, все существенные действия реализуются
с помощью плагинов.
• На момент подготовки презентации в npm registy было более 2500 плагинов для Grunt
• Более 25 из них поддерживаются командой разработчиков.
21. Написать свою задачу до безобразия просто
grunt.registerTask('custom', 'My "custom" task description.', function() {
grunt.log.writeln('Currently running the "custom" task.');
});
22. Создать собственный плагин не намного труднее
codefo:~ codefo$ npm install -g grunt-init
codefo:~ codefo$ git clone git://github.com/gruntjs/grunt-init-gruntplugin.git
~/.grunt-init/gruntplugin
codefo:~ codefo$ grunt-init gruntplugin
38. Предыстория
Плюс в будущем хотелось иметь возможность перейти на
модульную архитектуру и покрыть часть кода тестами, не
изменяя при этом систему сборки
39. Как теперь все работает
• Сейчас мы используем 11 плагинов
(clean, copy, concat, csshint, jshint, cssjoin, requirejs, cssmin, uglify, qunit, hash)
• У нас зарегистрировано две задачи: check и deploy
• Установлен собственный npm репозиторий
• Запуск проверки кода на TeamCity после каждого
изменения в VCS
40. Problems?
• Grunt плохо дружит с потоками вводавывода Windows
• Очень редко, но случаются какие-то затыки при
скачивании пакетов с локального npm репозитория
• Gruntfile стал слишком большой
42. Отличия и недостаки:
• Gulp – это потоковая система сборки
• Относительно небольшой возраст
(разработка началась в июле 2013 года)
• Меньше комьюнити, а следовательно,
меньше плагинов и поддержки