Мой доклад о создании yeoman генератора своими руками на митапе 4front. Рассказ о том, как yeoman.io упрощает жизнь, спасает от рутины и экономит время.
Обзор технологии и типичных граблей.
1. Yeoman Generator своими руками
• Yeoman-генератор: что же это
такое?
• Зачем нужны yeoman-генераторы и
не лучше ли по старинке?
• Как написать свой генератор, с чего
начать, экскурс по граблям
• Демо моего лунапарка.
3. Борис Мосунов
Фрилансер,
Веб-разработчик.
Чаще всего разрабатываю
кастомные сайты на WordPress.
Разработал свой фреймворк,
позволяющий писать темы и
плагины для WordPress в парадигме
MVC/OOP
А что бы делать это было проще я
разработал свой yeoman generator
8. Какие решения мы принимаем?
Гениальный код
для решения
нетривиальной
задачи
9. Какие решения мы принимаем?
Гениальный код
для решения
нетривиальной
задачи
Я уже делал такое,
ща поищем,
ctrl+c, ctrl+v,
осталось кое-что
переименовать
13. Как в реальности?
Гениальный код
для решения
нетривиальной
задачи
Я уже делал такое,
ща поищем,
ctrl+c, ctrl+v,
осталось кое-что
переименовать
Хорошо если хотя бы так
30. A yeoman was a social
class in late medieval to
early modern England. In
early recorded uses, a
yeoman was an attendant
in a noble household.
Wikipedia
33. yeoman - утилита для генерации пустого проекта
по заданному сценарию
yeoman generator - программная реализация
такого сценария генерации пустого проекта
Запуск: yo <generator>
yo - сокращение от yeoman,
название исполняемого файла
yeoman subgenerator - вспомогательный сценарий
по генерации модулей, блоков, моделей и т.д.
Запуск: yo <generator>:<subgenerator> <name>
49. npm install -g generator-generator
yo generator
yo generator:subgenerator <name>
npm link
yo my-generator
npm -g unlink generator-my-generator
Демо: YO-генератор с нуля
50. Структура папок
генератор = сценарий + шаблоны кода и конфигов
директория генератора
шаблоны кода и конфигов
сценарий генератора
59. mem-fs - файловая система «in memory»
во время работы сценария, все изменения
файловой системы пишутся в память.
по окончании работы сценария
идет сравнение файлов на диске и в памяти
и срабатывает механизм разрешения конфликтов
файловая система у YO - синхронная
Работает с двумя папками:
generator.templatePath()
generator.destinationPath()
68. Грабли
mem-fs:
На данный момент yeoman использует
параллельно два api:
• новое (this.fs.)
• и legacy (this.).
Это порождает путаницу.
Лучше сделать обертку, как я :)
69. Грабли
Каждой отдельной фиче - свой сабгенератор,
иначе конструкции inquirer.js начинают
напоминать многотомные текстовые квесты.
Как у меня :(
70. Выводы
1. Готовыми генераторами стоит пользоваться, это экономит
время, силы и нервы.
2. Изучение новых фреймворков стоит начинать с поиска
генераторов
3. Написание своего генератора отнимает много сил и времени -
программирование в квадрате. Поэтому писать его стоит только
если вы точно знаете что впереди у вас очень много
повторяющейся работы.
4. Если вы написали свой фреймворк, продвинуть его получится
значительно быстрее, если сделать для него yeoman-generator
5. Наличие генератора помогает поддерживать единообразие кода
и следование стайлгайдам.
71. Задавайте свои вопросы!
Борис Мосунов
borix@tut.by
skype: boris.mossounov
fb: mossounov
tw: @chaykaborya
anotherguru.me
Мой сайт,
сделанный на моем фреймворке
с помощью моего yeoman генератора