Ответ 1
Это обычная проблема между различными средами Jekyll.
Некоторые объяснения
Нам нужно понять site.url
и site.baseurl
и в какой ситуации они нам нужны.
Эти переменные не выполняют одну и ту же цель.
site.url
По умолчанию эта переменная используется только в заголовке страницы для заголовка canonical
и RSS link
. Он также используется в XML-канале для указания ресурсов сайта, поскольку программное обеспечение, которое будет управлять этим каналом, не знает URL-адреса ресурсов.
Эта переменная необходима только для внешних систем.
site.baseurl
Эта переменная указывает корневую папку вашего сайта Jekyll. По умолчанию установлено значение ""
(пустая строка). Это означает, что ваш сайт Jekyll находится в корне http://example.com
.
Если ваш сайт Jekyll живет в http://example.com/blog
, вам нужно установить site.baseurl
в /blog
(отметить косую черту). Это позволит загружать ресурсы (css, js) правильно.
Посмотрите, как активы загружаются в вашу голову:
<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
который также может быть:
<link rel="stylesheet" href="{{ site.baseurl }}/css/main.css">
Работа в разных средах
Теперь вам нужно проверить свой сайт на месте и развернуть его на производстве. Иногда baseurl
отличается и jekyll build
может не работать из коробки в одной из этих окружений.
Здесь мы имеем два решения:
Использовать jekyll serve
Представьте, что ваш сайт живет в репозитории github и обслуживается в https://username.github.io/myProject
.
Вы можете настроить baseurl
на /myProject
. и протестируйте свой сайт локально с помощью jekyll serve
, ваш сайт будет обслуживаться в http://127.0.0.1:4000/myProject/
Использовать несколько файлов конфигурации
Если по той или иной причине вы не можете использовать jekyll serve
, вы можете установить файл конфигурации для среды и jekyll build
в зависимости от того, где вы развертываете.
Скажем, у нас есть локальный сайт, обслуживаемый в http://localhost
, а производственный сайт обслуживается в https://username.github.io/myProject
.
Мы оставляем _config.yml
с url: https://username.github.io
и baseurl: /myProject
Мы создаем новый _config_dev.yml
только с url: https://localhost
и baseurl: ""
Теперь для локального тестирования:
jekyll build --config _config.yml,_config_dev.yml
или
jekyll build --config _config.yml,_config_dev.yml --watch
При нажатии на команду, команда jekyll build
будет использовать по умолчанию _config.yml
.