Ответ 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" и запускает автоматическую перезагрузку вашего браузера при изменении содержимого. В сети вы можете оставить свое окно браузера рядом с текстовым редактором и увидеть, что изменения происходят автоматически при сохранении файла. Время от времени оно немного шелушится, но после его использования вы не будете знать, как вы жили без него.