Я строю сайт в Blogdown, и это примерно такая структура:
mysite
|--config.toml
|--ppe_config.toml
|--content/
|...
Базовый сценарий
При запуске blogdown::build_site()
Я хотел бы указать, какой файл конфигурации выбрать. Как это сделать?
Более сложный сценарий
В Документ Хьюго можно увидеть, что с помощью каталогов конфигурации можно использовать более продвинутую структуру конфигурации. Итак, если у меня есть эта структура:
mysite
|--config
| |--_default
| | |--config.toml
| |--ppe
| | |--config.toml
|--content/
|...
Как указать среду при вызове blogdown::build_site()
?
Документация и справочная страница , касающиеся Blogdown и blogdown::build_site
, не указывают этого. Есть упоминание о пользовательском R-файле, который будет использоваться для сборки, но возможно ли, что я не могу указать параметры для команды, передаваемой Хьюго?
Более глубокое расследование
С Blogdown сайта GitHub , можно увидеть, что build_site
в конечном итоге загрузит конфигурацию через функцию load_config
:
load_config = function() {
config = opts$get('config')
owd = setwd(site_root()); on.exit(setwd(owd), add = TRUE)
f = find_config(); m = file.info(f)[, 'mtime']
# read config only if it has been updated
if (identical(attr(config, 'config_time'), m)) return(config)
parser = switch(f, 'config.toml' = parse_toml, 'config.yaml' = yaml_load_file)
config = parser(f)
attr(config, 'config_time') = m
attr(config, 'config_content') = read_utf8(f)
opts$set(config = config)
check_config(config, f)
}
Функция find_config
может быть найдена в том же файле через несколько строк:
# only support TOML and YAML (no JSON)
config_files = c('config.toml', 'config.yaml')
find_config = function(files = config_files, error = TRUE) {
f = existing_files(files, first = TRUE)
if (length(f) == 0 && error) stop(
'Cannot find the configuration file ', paste(files, collapse = ' | '), ' of the website'
)
f
}
И кажется, что нет возможности указать другую конфигурацию.
- Это предположение верно?
- Если нет, то где мы можем загрузить другую конфигурацию?