Как настроить Jekyll для блога с большим каталогом изображений, чтобы избежать дублирования этого каталога на созданном сайте? - PullRequest
12 голосов
/ 07 августа 2011

Я рассматриваю Jekyll для сайта, который я собираю, который будет блогом с большим количеством изображений (и других крупных медиа-файлов).Достаточно просто создать каталог для изображений и затем ссылаться на них по мере необходимости в сообщениях.Но, насколько я понимаю, при создании сайта все данные изображения будут скопированы в сгенерированный каталог _site, содержащий статические файлы.Каждый раз, когда создается сайт, каталог _site очищается и заполняется статической версией сайта.

Можно ли, например, удалить символическую ссылку на каталог images внутри каталога сайта итогда, может быть, Джекилл игнорирует его, когда генерируются статические файлы?

Или есть другой способ сделать это, который имеет больше смысла?

Ответы [ 4 ]

10 голосов
/ 08 августа 2011

Предполагая, что вы работаете на веб-сервере apache, вы можете настроить директиву Alias ​​для обслуживания изображений из каталога, находящегося за пределами обычного docroot. Вам необходим доступ для редактирования конфигурации VirtualHosts или какой-либо другой возможности для создания директив псевдонимов (например, через панель управления).

Для примера того, как это будет работать, допустим, вы храните свои файлы jekyll в каталоге с именем "/ web / jekyll". Чтобы получить каталог изображений, выполните следующие действия:

  1. Добавьте каталог "_images" вместе с вашим базовым деревом джекилла. Завершая что-то вроде:

    _config.yml
    _images/
    _layouts/
    _posts/
    _site/
    index.md
    
  2. Обновите конфигурацию apache, добавив директиву Alias, например:

    Alias /images /web/jekyll/_images
    
  3. Перезагрузите конфигурацию apache и запустите jekyll, чтобы создать сайт.

Поскольку имя каталога изображений начинается с подчеркивания, jekyll не будет выдвигать / копировать его на выходной _сайт во время сборки. Apache с радостью будет обслуживать большинство файлов из вашего каталога _site в обычном режиме, но когда он видит что-то вроде "http://jekyll/images/test.jpg", вместо поиска файла в" /web/jekyll/_site/_images/test.jpg ", он будет обслуживать его из "/web/jekyll/_images/test.jpg".


Кстати, мне нравится немного больше разделения исходного и выходного содержимого, чем по умолчанию в jekyll. Итак, я настроил структуру каталогов следующим образом:

/web/jekyll/html/
/web/jekyll/images/
/web/jekyll/source/
/web/jekyll/source/_config.yml
/web/jekyll/source/_layouts
/web/jekyll/source/_posts
/web/jekyll/source/index.md

Со следующей опцией, установленной в _config.yml

destination: ../html

И установка директивы apache alias с помощью:

Alias /images /web/jekyll/images

Jekyll запускается в каталоге "/ web / jekyll / source", но вывод отправляется в каталог "/ web / jekyll / html". Как и в первом примере, вызовы "http://jekyll/images/test.jpg" поступают из" /web/jekyll/images/test.jpg ". Эта настройка на самом деле не имеет значения с точки зрения обслуживания сайта. Мне просто нравится более чистое разделение между необработанные исходные файлы, полностью запеченные выходные файлы и изображения, которые работают через псевдоним.

0 голосов
/ 24 октября 2015

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

0 голосов
/ 06 марта 2014

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

Убедитесь, что:

исключите: [jekyll, css, img] в _config.yml файл

linux: ";"Символ выполняет первую, вторую, третью .. команды.

скрипт: файл с именем jekyll с исполняемыми правами доступа, содержащий

 jekyll;
 ln -s /var/www/css /var/www/_site/css;
 ln -s /var/www/img /var/www/_site/img;

Наконец, запустите (./jekyll) эту программу вместо jekyll.

-Дан

0 голосов
/ 12 марта 2012
  1. Создайте страницу проекта для изображений.
  2. Настройка структуры каталогов

    /home/git/svnpenn.github.io
    /home/git/img
    
  3. Беги Джекилл

    # We cant add the symlink until after jekyll is done. We will remove the
    # site folder and wait for it to rebuild.
    rm -r _site
    jekyll --server &
    while [ ! -f _site/index.html ]
    do
      sleep 1
    done
    ln -s ../images _site/images
    

Примечание Я использовал это, потому что я думал, что это поможет опубликовать время на GitHub страницы. Это не. GitHub может занять 1-10 минут для публикации в зависимости от сервер.

...