Подтвердить что ты не робот

Сократить время генерации страницы для локального сервера jekyll

При запуске jekyll --server весь сайт будет перестроен. На достаточно большом участке это занимает очень много времени. Даже с флагом --auto, который должен предотвратить регенерацию всего сайта, время до завершения довольно продолжительное (для меня это, по сообщениям, в минутах для меня составляет 10 секунд). Это неудобно при редактировании и просмотре одной страницы. Я хочу сократить время.

Есть ли способ определить, почему Jekyll занимает столько времени, сколько нужно, чтобы перестроить страницу?

В качестве альтернативы существуют ли рекомендации для редактирования рабочего процесса, которые допускают короткий цикл обратной связи с Jekyll?

4b9b3361

Ответ 1

Я не могу решить, сколько времени потребуется для полной сборки сайта, но я придумал способ значительно ускорить составление документов и внесение изменений в макет. Все это предполагает, что вы работаете на локальном компьютере для редактирования, а затем развертываете на производственный сервер. Ваш пробег может отличаться, если у вас есть другой процесс.

Основная идея состоит в том, чтобы использовать несколько исходных каталогов jekyll, каждый из которых указывает на то же место вывода. В моем случае я использую три. Один для составления и редактирования сообщений (называемых "_drafts" ), один для изменения макета, дизайна и функциональности (называемый "_dev" ) и окончательный, который содержит содержимое полного сайта (называемого "_main" ).

Структура каталога верхнего уровня выглядит следующим образом:

./_drafts
./_dev
./_main
./html

Файл _config.yml для каждого источника jekyll настраивается следующим образом, чтобы указать вывод, сгенерированный jekyll, в каталог "html" :

destination: ../html

Каталоги "_prafts" и "_dev" содержат минимальное количество файлов, необходимых для имитации дизайна и функциональности сайта "_main". Я выполняю всю свою работу в тех двух каталогах, в которых работает jekyll, в зависимости от того, что работает. Мой локальный веб-сервер настроен на то, чтобы указать локальный домен (например, http://jekyll-test/) в каталог "html" , чтобы я мог видеть, что происходит, когда я вношу изменения.

Когда я закончу редактирование, я копирую только что обновленные файлы из '_dev' или '_drafts' в соответствующее место в '_main'. После того, как файлы находятся на своем месте, я делаю один последний запуск jekyll в '_main'. При таком подходе вам нужно только подождать через длительное время создания сайта, прежде чем развертывать сайт для производства. Я использовал этот подход в течение некоторого времени и считаю, что это имеет огромное значение.

Есть несколько других способов оптимизации рабочего процесса:

  • Используйте символические ссылки, чтобы синхронизировать дизайн и функциональность "_prafts" и "_main".

    Если вы находитесь на машине Mac или Linux, установите символические ссылки на точки ./_drafts/_config.yml на ./main/_config.yml и ./_drafts/_layouts на ./main/_layouts (Подобная функциональность, вероятно, существует в Windows, но я не могу с ней разговаривать), По какой-то причине, jekyll не будет работать хорошо с некоторыми каталогами, символически связанными. Например, при моей установке у меня есть корневой уровень "css", который не работает как ссылка sym. Я должен иметь фактическую копию его во всех местах.

  • Создайте развертывание script.

    Когда я готов к развертыванию, я не запускаю jekyll напрямую. Я написал немного script вызовы jekyll в каталоге "_main", rsyncs выводит на мой производственный сервер, а затем уведомляет меня, когда он завершается. Это не только экономит время ожидания на jekyll, но и уменьшает количество шагов, необходимых для развертывания сайта.

  • Создайте дополнительные скрипты и инструменты.

    Копирование файлов из каталога "_dev" и "_drafts" не имеет большого значения, но это отличное место для добавления некоторой автоматизации. Например, у меня есть командная строка script, которая копирует файлы `_config.yml 'и каталоги' _layouts 'и' css 'из' _dev 'как для "_prafts", так и "_main" (при необходимости).

    Другим инструментом на docket является локальное веб-приложение, которое будет перемещать сообщения из '_drafts' в '_main'. Хорошо, что облегчает перемещение файлов и уменьшает трение при создании и публикации.

  • Использовать LiveReload

    Запуск локально jekyll --auto отлично подходит для автоматического создания изменений при работе с файлами. Естественным компаньоном для этого является приложение под названием LiveReload. Он отслеживает ваш локальный каталог "html" и запускает автоматическую перезагрузку вашего браузера при изменении содержимого. В сети вы можете оставить свое окно браузера рядом с текстовым редактором и увидеть, что изменения происходят автоматически при сохранении файла. Время от времени оно немного шелушится, но после его использования вы не будете знать, как вы жили без него.

Ответ 2

Это повторяющийся объект в трекер Jekyll на Github. К сожалению, это не одна из целей. Например:

Просто найдите слова "скомпилировать" и "время", и вы сможете найти больше. Это немного сложнее, чем кажется, потому что есть возможность сломанных ссылок.

Кроме того, если вы используете LSI, используйте последнюю версию, потому что это связано с исправлением, которое делает его намного быстрее.

Мой единственный совет для вас - посмотреть, действительно ли вам нужны все эти сообщения (я знаю, я знаю), потому что это, вероятно, единственный ответ, который вы получили от трекера по проблеме прямо сейчас - то, что мы все хотим адрес, но никто не хочет начинать.

P.S.: Пожалуйста, разместите свою проблему на трекер проблемы - с большим количеством людей, жалующихся, это гораздо более возможно для исправления.