我正在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
}
似乎无法指定其他配置。