Skip to content

Watch and rebuild files in static/ #637

@cderv

Description

@cderv

For context, this is from a question by @gadenbuie

I’m working on a workshop page with blogdown where I have regular posts in content/... and slides in static/slides/. I have a custom build script to build the slides (since they’re a little complicated). I’d like blogdown to watch for changes in both content/ and static/ but to use my R/build.R script to render the slides rather than trying to render the .Rmd files individually. Is this possible?

Ideally, this would be

  • serve_site()
  • modify a file
  • site rebuild -> calls R/build.R at the end

Current workaround is

options(
  blogdown.knit.on_save = FALSE,
  blogdown.method = "custom"
)
.serve_site <- function() {
  check_and_rebuild <- function() {
    if (Sys.getenv("BLOGDOWN_SERVING_DIR", "") == "") {
      message("blogdown is no longer serving the site, not watching for changes")
      return()
    }
    changed <- blogdown:::filter_timestamp(blogdown:::list_rmds(c("content", "static")))
    if (length(changed)) {
      blogdown::build_site(build_rmd = 'timestamp')
    }
    later::later(check_and_rebuild, delay = 5)
  }
  blogdown::serve_site()
  check_and_rebuild()
}

This should be possible to have this behavior built in, meaning whether to automatically knit Rmd under static/ on save

Metadata

Metadata

Assignees

No one assigned

    Labels

    featurea feature request or enhancementnextto consider for next release

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions