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

Как определить, работает ли jekyll на местном уровне или на производственной площадке?

В jekyll называется production_url. Я не могу найти информацию о том, как его использовать.

В идеале я хотел бы иметь возможность создавать постоянные ссылки с локальным url, когда он запускается с параметром serve и с производственным URL-адресом при запуске с параметром build.

Как я могу это сделать?

4b9b3361

Ответ 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.ymlurl.

Подробнее о плагине вы можете узнать здесь:

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