使用 blogdown 自动化网站建设

问题描述

我正在尝试自动化我的 blogdown 站点的构建过程。
我有几页只需要更新 yaml 标头中的日期。
这些页面下载数据,然后生成更新的报告。

我的问题:当我手动更改日期并仅通过工具栏上的“编织”按钮编织文件时,查看器窗口中的站点将具有更新后的文件并在内容页面上显示链接
但是当我进一步运行代码时,文件将被呈现,但查看器(以及指向本地服务器的浏览器)将不再显示这些条目和文件

我需要添加什么才能在自动驾驶仪上运行站点更新?

library(tidyverse)
library(knitr)
library(fs)
library(here)
library(rmarkdown)
library(blogdown)

change_yaml_matter <- function(input_file,...,output_file) {
  input_lines <- readLines(input_file)
  delimiters <- grep("^---\\s*$",input_lines)
  if (!length(delimiters)) {
    stop("unable to find yaml delimiters")
  } else if (length(delimiters) == 1L) {
    if (delimiters[1] == 1L) {
      stop("cannot find second delimiter,first is on line 1")
    } else {
      # found just one set,assume it is *closing* the yaml matter;
      # fake a preceding line of delimiter
      delimiters <- c(0L,delimiters[1])
    }
  }
  delimiters <- delimiters[1:2]
  yaml_list <- yaml::yaml.load(
    input_lines[ (delimiters[1]+1):(delimiters[2]-1) ])

  dots <- list(...)
    
  for (element_name in names(dots)){
    if(element_name %in% names(yaml_list)) {
      yaml_list[element_name] <- dots[element_name]
    } else {
      yaml_list <- c(yaml_list,dots[element_name]) 
    }
  }
    
  output_lines <- c(
    if (delimiters[1] > 0) input_lines[1:(delimiters[1])],strsplit(yaml::as.yaml(yaml_list),"\n")[[1]],input_lines[ -(1:(delimiters[2]-1)) ]
  )

  if (missing(output_file)) {
    return(output_lines)
  } else {
    writeLines(output_lines,con = output_file)
    return(invisible(output_lines))
  }
}

dir_ls(
  file.path(here(),"content","post") 
) ->
content_dirs



content_dirs %>%
   file.path("index.Rmd") ->
files_to_change

for (f in files_to_change){
  change_yaml_matter(f,date=as.character(Sys.Date()),output_file=f)
}



build_dir(file.path(
  here(),"content")
)
build_site(local=TRUE,run_hugo=TRUE)
hugo_build()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)