Я ранее задавал вопрос о том, как настроить локальное окружение для более быстрой разработки при создании плагина, и знаю, что это интересовало и других.
Я использую новый рабочий процесс, который работает отлично, и решил поделиться им на случай, если это окажется полезным для других. Он не решает всех проблем, но делает работу гораздо приятнее. Вот детали:
Сначала о моей предыдущей проблеме:
Для разработки плагина мне приходилось писать код на локальном экземпляре Discourse, и это было очень медленно, потому что: 1) любое изменение файлов требовало перезагрузки страницы, а мой компьютер делал это очень медленно при запуске Discourse (около 30 секунд на перезагрузку страницы); 2) локальный сайт Discourse для разработки, на котором я тестировал, был очень медленным (медленная навигация и т. д.); 3) любое изменение в бэкенд-коде плагина требовало остановки и перезапуска сервера, что занимало несколько минут. Всё это время вентилятор моего компьютера работал на полную мощность.
В результате на то, что при плавном рабочем процессе я обычно делаю за 10 минут, уходило около часа.
Моё решение
В отличие от разработки плагина, рабочий процесс создания компонента темы просто отличный, благодаря Discourse theme CLI. (Мои шаги по его использованию здесь.) Это быстро и плавно.
Почему разработка темы или компонента темы так быстрее и проще
С помощью инструмента темы CLI вы можете писать код темы локально, но «наблюдать» за ним (то есть запускать тему) на живом сайте (либо на вашем реальном сайте, либо на реальном сайте в режиме предпросмотра, либо на тестовом живом сайте, который вы настроили).
Таким образом, вам не нужно запускать сам Discourse на вашем компьютере, и поэтому мой компьютер не замедляется, как это бывает при разработке плагина. И всякий раз, когда вы вносите изменения, вам достаточно просто обновить связанный живой сайт, и изменения сразу отображаются.
Итак, я понял: в большинстве случаев, когда я пишу код плагина, это касается фронтенда (файлы hbs, файлы JavaScript и т. д.). Лишь небольшая часть времени уходит на бэкенд (настройка маршрутов, создание пользовательских полей и т. д.).
Вместо того чтобы писать всё вместе, я просто переношу весь фронтенд-код в компонент темы, чтобы воспользоваться преимуществами рабочего процесса компонентов темы.
Когда мне нужно обновить бэкенд-часть плагина, я снова работаю в плагине, но это занимает только около 20% времени (по крайней мере, в моей разработке плагинов). Это позволяет мне теперь 80% времени проводить с гораздо более приятным рабочим процессом компонентов темы.
Когда пришло время переносить всё в продакшн, я могу:
- оставить компонент темы и плагин отдельно и просто использовать их оба на соответствующем сайте Discourse, или
- если важно иметь весь код в одном месте, в этот момент перенести код компонента темы в плагин. Признаю, это может быть немного утомительно, но делать это нужно будет только один раз, когда вы готовы обновить для продакшна, при этом наслаждаясь более быстрым рабочим процессом компонентов темы.
Всё.
Не революционно. Но это значительно улучшило ситуацию с тем, что меня долгое время сбивало с толку.