在Blogdown中构建网站时如何指定配置文件?

时间:2019-04-10 06:59:16

标签: rstudio r-markdown hugo blogdown

我正在Blogdown中建立一个网站,大致结构如下:

mysite
 |--config.toml
 |--ppe_config.toml
 |--content/
 |...

基本情况

运行blogdown::build_site()时,我想指定要选择的配置文件。该怎么做?

更高级的方案

Hugo's doc中,可以看到通过使用配置目录可以使用更高级的配置结构。所以,如果我有这个结构:

mysite
 |--config
 |   |--_default
 |   |   |--config.toml
 |   |--ppe
 |   |   |--config.toml
 |--content/
 |...

调用blogdown::build_site()时如何指定环境?

关于Blogdown和blogdown::build_site的{​​{3}}和documentation未指定。提到了用于构建的自定义R文件,但是可能无法指定要传递给Hugo的命令的选项吗?


更深入的调查

help page中,可以看到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
}

似乎无法指定其他配置。

  • 这个假设正确吗?
  • 如果没有,我们可以在哪里加载其他配置?

0 个答案:

没有答案