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

Переключить тему в существующую установку Jekyll

Есть много тем для Jekyll, например. https://github.com/jekyll/jekyll/wiki/Themes.

Каков самый простой способ перехода на новую тему в СУЩЕСТВУЮЩЕЙ установке Jekyll?

4b9b3361

Ответ 1

Пока вы могли переноситься на существующую установку, открывая новую тему, а затем вручную копируете и вставляете ресурсы, такие как CSS, JS, HTML, в _includes, _layouts и другие файлы, которые вы может потребоваться, это, вероятно, не является отличной идеей, так как вы в конечном итоге имеете размытие старых и новых ресурсов, которые могут быть не одного и того же имени, но в том сценарии, которым они являются (например, вы не перезаписывали старая таблица стилей, которая ссылается на ваши сообщения), это вызовет смешанные стили CSS, которые вам придется отлаживать и медленно исправлять.

Поскольку я предполагаю, что у вас есть установка Jekyll с Git (если вам это действительно не нужно), вы можете создать ветвь с именем new-theme и переключиться на эту ветку с master в качестве рабочей ветки. (Простой способ иметь что-то вроде этого - просто скопировать всю установку Jekyll и вставить ее в другое место как old-Jekyll-install, если вы не хотите иметь дело с ветвями Git (но на самом деле вам нужно. Вот учебник, который помог мне учиться)

  • Выдвиньте файлы для новой темы.
  • Вручную скопируйте _posts и ваши индивидуальные изменения.
  • Порт через ваш _config.yml, вручную сравнивая их и перемещая то, что необходимо.
  • Создайте сайт и посмотрите, чего не хватает, что может быть испорчено (например, в прошлом вы могли добавить несколько тегов <br \> для интервала, и вы не хотите этого в новой теме).
  • Объединить с master (или нажать его для производства)

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

Ответ 2

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

Потяните новую тему

Мы создаем новую сиротскую ветвь newtheme и не будем пустым.

git checkout --orphan newtheme
git rm -rf .
git clean -dfx

Затем мы вставляем в него файлы тем, добавляя тему в качестве восходящего пульта. В этом примере я вытягиваю ветку темы master John Otander Pixyll.

git remote add upstream https://github.com/johnotander/pixyll.git
git fetch upstream
git pull upstream master

Создайте тему и протестируйте ее.

bundler install
jekyll serve

Объединить изменения

Теперь мы объединяем наши сообщения, настройки и т.д. Вы можете использовать Git checkout для копирования файла или папки со своего старого сайта Jekyll. Обратите внимание, что это будет перезаписывать файл темы, если он существует.

git checkout master -- _posts

В качестве альтернативы вы можете скопировать файл под новым именем, например, чтобы объединить его вручную.

git show master:_config.yml > _config.yml.old

Если вы случайно перезаписали файл темы, вы можете восстановить его.

git checkout upstream/master -- about.md

Это файлы, которые мне пришлось копировать, объединять, настраивать или удалять:

  • Файлы Markdown в корневой папке.
  • Сообщения в папке _posts.
  • Черновики в папке _drafts.
  • Конфигурационный файл _config.yml.
  • Файл Gemfile gem.
  • Файл CNAME (для страниц GitHub).
  • Rakefile (если есть).
  • Файлы favicon (если есть).
  • Ручные изменения темы, такие как поля Google Analytics, Disqus, SEO (если есть).

Зафиксируйте свои изменения и не забудьте снова протестировать тему.

Заменить главную ветвь

Наконец, мы заменим существующую ветвь master новой ветвью newtheme. Предполагая, что мы находимся на ветке newtheme:

git checkout newtheme
git merge -s ours master
git checkout master
git merge newtheme

Нажмите изменения.

git push

И очистите локальную ветвь newtheme.

git branch -d newtheme

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


Обновление темы

Если в любой момент вы хотите обновить тему, чтобы включить последние изменения в восходящем направлении, просто:

git pull upstream master

И исправить любые конфликты слияния. Здесь я предполагаю, что пульт upstream по-прежнему установлен в репозиторий тем (вы можете проверить это с помощью git remote -v).

Ответ 3

Jekyll v3.2 представил темы на основе gem (для будущих планов см. здесь):

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

Цель темы, основанной на драгоценных камнях, - дать вам возможность получить все преимущества надежной, постоянно обновляемой темы без наличия всех тем файлы на вашем пути и чрезмерное усложнение того, что может быть вашим основное внимание: создание контента.

Установка темы на основе gem проста:

  • Добавьте тему на свои сайты Gemfile: gem "jekyll-theme-awesome"
  • Установите тему: bundle install.
  • Добавьте на свои сайты _config.yml следующие темы: theme: jekyll-theme-awesome
  • Создайте свой сайт: bundle exec jekyll serve

Чтобы переключать темы, я считаю, что что-то вроде этого должно работать:

  • Изменение новой темы на ваших сайтах Gemfile: gem "jekyll-theme-new"
  • Установить тему: bundle install
  • Измените сайты _config.yml для ссылки на новую тему: theme: jekyll-theme-new
  • Создайте свой сайт: bundle exec jekyll serve
  • (необязательно - удалите старую тему с вашего устройства). Запишите папку установки старой темы (bundle show jekyll-theme-awesome) и удалите ее с помощью gem uninstall jekyll-theme-awesome. Чтобы быть в безопасности, убедитесь, что его папка действительно удалена.

Обновление тем, основанных на драгоценных камнях, легко:

Если у вас есть драгоценный камень темы, вы можете (если хотите) запустить bundle updateдля обновления всех драгоценных камней в вашем проекте. Или вы можете запустить bundle update <THEME>, заменив имя темы, например minima, на просто обновите тему gem. Любые новые файлы или обновления темы разработчик сделал (например, таблицы стилей или включает) будет вытащен в ваш проект автоматически.

Важное примечание: во время записи страницы GitHub поддерживают определенный набор тематических тем: Архитектор, Кайман, Динки, Хакер, Височный день, Мерло, Полночь, Минимум, Минимальный, Модернистский, Шиферный, Тактильный и Время машины. Из них кажется, что только Minima ориентирована на блоги (например, она единственная со встроенной поддержкой Disqus). Тем не менее, вы должны иметь возможность использовать любую тему, если вы хотите запустить процесс сборки Jekyll.

Другой альтернативой является страницы GitLab (учебник, образец сайта).

Ответ 4

С GH-Pages

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

  • Для обеспечения безопасности создайте новую ветку

    git checkout -b newtheme

  • Затем добавьте новую тему в качестве удаленного

    git remote add new-theme-upstream https://github.com:drjekyllthemes/jekyll-minimal-theme.git git pull new-theme-upstream HEAD

  • В грязной части у вас будет куча конфликтов слияния. Проверьте, какие файлы имеют конфликты слияния с git status, надеюсь, что эти конфликты должны быть только в файлах стиля, которые вы хотите перезаписать. Если есть файлы, которые вы хотите сохранить, вы можете отредактировать их с помощью текстового редактора: git будет отмечать изменения в файле
  • Нажмите на начало координат

    git push origin newtheme

  • Перейдите на страницу проекта github, и вы заметите что-то вроде этого:
  • Создайте запрос на перенос и слейте новые изменения.
  • Ваш проект по-прежнему будет отображаться как вилка первой темы, и вы не сможете создавать запросы на загрузку для новой темы. Но вы можете объединить новые обновления для своей новой темы, используя git pull new-theme-upstream

Если вы не используете gh-страницы или если вы строите jekyll локально, прежде чем нажимать на github (я думаю)

Вы могли бы сохранить свои темы в подмодулях git, как отдельные папки, а затем символизировать ключевые элементы для jekyll. Этот не будет работать в gh-pages грубый пример blog | +-- theme_1/ | +-- theme_2/ | | | +-- _layouts/ | +-- _layouts ln - theme_2/_layouts Таким образом, при смене тем темы не сталкиваются.

Ответ 5

Самый простой способ переключить тему в существующую или новую установку jekyll - использовать следующий плагин: jekyll-remote-theme, который доступен с ноября 2017 года.

Хотя он в настоящее время находится в стадии бета-тестирования, он отлично работает и, самое главное, он уже включен в список на страницах Github, поэтому нет необходимости создавать локально, если только запрошенная тема не содержит неподдерживаемые драгоценные камни.

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

В дополнение к более простому переключению, метод jekyll-remote-theme должен автоматически вводить новую версию удаленной темы, как только вы вносите изменения, и есть новая версия сопровождающего темы. Если сопровождающий темы внесет коренные изменения, которые вам не нравятся, вы всегда будете в нескольких нажатиях от новой темы.

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

Если ваша существующая установка jekyll чиста (т.е. Вы редактировали только страницы, сообщения, конфигурацию), то коммутатор является бесшовным. Если у вашей существующей темы есть специальные макеты (например, splash.html и у нее ее нет), ваши страницы, на которых используется соответствующий макет, становятся сиротами (т.е. Базовым html без специального форматирования). Я переключил существующую установку, которая была широко отредактирована, поэтому я получил несколько сиротских страниц, но у меня не было никаких конфликтов с объединением git, которые возможны с другими описанными здесь методами.