Как определить, работает ли jekyll на местном уровне или на производственной площадке?
В jekyll называется production_url. Я не могу найти информацию о том, как его использовать.
В идеале я хотел бы иметь возможность создавать постоянные ссылки с локальным url, когда он запускается с параметром serve
и с производственным URL-адресом при запуске с параметром build
.
Как я могу это сделать?
Ответы
Ответ 1
jekyll serve
вызовет jekyll build
, поэтому вы не сможете использовать эти два способа для вывода различных схем URL.
Я построил плагин Jekyll, который делает это с Liquid Filter и одной пользовательской переменной в _config.yml
под названием mode
.
Вы устанавливаете mode
в разработку или production, а плагин позаботится об остальном в ваших шаблонах.
Таким образом, в вашем шаблоне может быть URL-адрес, например:
<img src="{{ '/img/dog.jpg' | to_absurl }}" />
Когда mode
- разработка, при создании/сервисе Jekyll вы получите URL относительный:
<img src="/img/dog.jpg" />
Локально к нему можно было бы обращаться: http://0.0.0.0:4000/img/dog.jpg
Когда mode
является production, на Jekyll build/serve вы получите URL абсолютный:
<img src="http://www.domain.tld/img/dog.jpg" />
http://www.domain.tld
- это то, что вы установили в переменной _config.yml
→ url
.
Подробнее о плагине вы можете узнать здесь:
http://jhaurawachsman.com/2013/jekyll-url-helper-filter-plugin/
Ответ 2
Я не вижу переменную production_url в текущей версии (v1.4.1), поэтому это может быть датированный вопрос, но я просто искал этот ответ сам. Существует свойство baseurl, которое может быть установлено с помощью флага и поэтому изменить путь к вашим файлам, но оно только регулирует относительный путь.
jekyll serve --baseurl '/blog'
Что вы можете сделать, так это использовать параметр -config для указания файла конфигурации для разработки.
Документация Jekyll
Ваши переменные конфигурации производства определены в _config.yml. Один из вариантов - создать отдельный файл конфигурации для разработки.
--config _config-dev.yml
Вы также можете (как я) переопределить переменные, определенные во втором файле конфигурации.
--config _config.yml,_config-dev.yml
Если вы используете жидкие шаблоны для ссылок на сайты, например:
<link rel="stylesheet" href="{{ site.base_url }}/stylesheets/blog.css">
то вы можете переопределить свойство base_url во время локального devlopment
base_url: http://localhost:4000
и запустить jekyll в разделе "Разработка"
jekyll serve -w --config _config.yml,_config-dev.yml
Ответ 3
Когда вы создаете свой веб-сайт Jekyll, его можно указать среду, которую он использует для сборки, с переменной JEKYLL_ENV
:
$ JEKYLL_ENV=production jekyll build
Если вы не задали явно JEKYLL_ENV
, по умолчанию он имеет значение для разработки.
{% if jekyll.environment == "production" %}
// Production environment.
{% endif %}
Github Pages автоматически устанавливает среду для производства.
Ответ 4
Это также помогло мне:
$ JEKYLL_ENV=production jekyll serve