wflow_publish is the main workflowr function. Use it when you are ready to publish an analysis to your site. wflow_publish performs three steps: 1) commit the file(s) (can include both Rmd and non-Rmd files, e.g. _site.yml), 2) rebuild the R Markdown file(s), 3) commit the generated website file(s). These steps ensure that the version of the HTML file is created by the latest version of the R Markdown file, which is critical for reproducibility.

  files = NULL,
  message = NULL,
  all = FALSE,
  force = FALSE,
  update = FALSE,
  republish = FALSE,
  combine = "or",
  view = getOption("workflowr.view"),
  delete_cache = FALSE,
  seed = 12345,
  verbose = FALSE,
  dry_run = FALSE,
  project = "."



character (default: NULL). R Markdown files and other files to be added and committed with Git (step 1). Any R Markdown files will also be built (step 2) and their output HTML and figures will be subsequently committed (step 3). Supports file globbing. The files are always built in the order they are listed.


character (default: NULL). A commit message.


logical (default: FALSE). Automatically stage files that have been modified and deleted. Equivalent to: git commit -a


logical (default: FALSE). Allow adding otherwise ignored files. Equivalent to: git add -f


logical (default: FALSE). Build any files that have been committed more recently than their corresponding HTML files (and do not have any unstaged or staged changes). This ensures that the commit version ID inserted into the HTML corresponds to the exact version of the source file that was used to produce it.


logical (default: FALSE). Build all published R Markdown files (that do not have any unstaged or staged changes). Useful for site-wide changes like updating the theme, navigation bar, or any other setting in _site.yml.


character (default: "or"). Determine how to combine the files from the arguments files, make (wflow_build() only), update, and republish. When combine is "or", any file specified by at least one of these arguments will be built. When combine is "and", only files specified by all of these arguments will be built.


logical (default: getOption("workflowr.view")). View the website with wflow_view after building files. If only one file is built, it is opened. If more than one file is built, the main index page is opened. Not applicable if no files are built or if dry_run = TRUE.


logical (default: FALSE). Delete the cache directory (if it exists) for each R Markdown file prior to building it.


numeric (default: 12345). The seed to set before building each file. Passed to set.seed. DEPRECATED: The seed set here has no effect if you are using wflow_html as the output format defined in _site.yml. This argument is for backwards compatibility with previous versions of workflowr.


logical (default: FALSE). Display the build log directly in the R console as each file is built. This is useful for monitoring long-running code chunks.


logical (default: FALSE). Preview the proposed action but do not actually add or commit any files.


character (default: ".") By default the function assumes the current working directory is within the project. If this is not true, you'll need to provide the path to the project directory.


Returns an object of class wflow_publish, which is a list with the following elements:

  • step1: An object of class wflow_git_commit from the first step of committing the files.

  • step2: An object of class wflow_build from the second step of building the HTML files.

  • step3: An object of class wflow_git_commit from the third step of committing the HTML files.


if (FALSE) {
# single file
wflow_publish("analysis/file.Rmd", "Informative commit message")
# All tracked files that have been edited
wflow_publish(all = TRUE, message = "Informative commit message")
# A new file plus all tracked files that have been edited
wflow_publish("analysis/file.Rmd", "Informative commit message", all = TRUE)
# Multiple files
wflow_publish(c("analysis/file.Rmd", "analysis/another.Rmd"),
              "Informative commit message")
# All R Markdown files that start with the pattern "new_"
wflow_publish("analysis/new_*Rmd", "Informative commit message")
# Republish all published files even though they haven't been modified.
# Useful for changing some universal aspect of the site, e.g. the theme
# specified in _site.yml.
wflow_publish("analysis/_site.yml", "Informative commit message",
              republish = TRUE)
# Publish all previously published files that have been committed more
# recently than their corresponding HTML files. This is useful if you like to
# manually commit your R Markdown files.
wflow_publish(update = TRUE)