Це загальна проблема між різними середовищами 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
.
site.url
для додавання ресурсів css / js. Це погана ідея? Чи слід змінити все наsite.baseurl
та використовуватиsite.url
лише для канонічного посилання та стрічки xml?