rstudio / bookdown

Authoring Books and Technical Documents with R Markdown

Home Page:https://pkgs.rstudio.com/bookdown/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

output_dir in _bookdown.yml is ignored for bookdown::html_document2

florisvdh opened this issue · comments

This issue extends on issue #1052. It seems that output_dir works for bookdown::pdf_book. However it does not for bookdown::html_document2 (and maybe others too).

dir.create(tmp_dir <- tempfile())
owd <- setwd(tmp_dir)
xfun::download_file("https://github.com/rstudio/bookdown-demo/archive/main.zip")
#> [1] 0
unzip("main.zip")
setwd("bookdown-demo-main/")
# Add config for output_dir
config <- yaml::read_yaml("_bookdown.yml")
config$output_dir <- "docs"
yaml::write_yaml(config, "_bookdown.yml")
# output dir does not exist before rendering
xfun::dir_exists("docs")
#> [1] FALSE
bookdown::render_book("index.Rmd", output_format = "bookdown::html_document2", quiet = TRUE)
#> [1] "/tmp/RtmpyCgUja/filecdc073efa451/bookdown-demo-main/bookdown-demo.html"
# output dir exists after rendering
xfun::dir_exists("docs")
#> [1] TRUE
# but its contents are:
dir("docs")
#> [1] "reference-keys.txt"
# rendering took place in working dir:
file.exists("bookdown-demo.html")
#> [1] TRUE
# clean
setwd(owd)
unlink(tmp_dir, recursive = TRUE)

Created on 2024-06-04 with reprex v2.1.0

Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.0 (2024-04-24)
#>  os       Linux Mint 21.3
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language nl_BE:nl
#>  collate  nl_BE.UTF-8
#>  ctype    nl_BE.UTF-8
#>  tz       Europe/Brussels
#>  date     2024-06-04
#>  pandoc   3.1.11 @ /usr/lib/rstudio/resources/app/bin/quarto/bin/tools/x86_64/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date (UTC) lib source
#>  bookdown      0.39    2024-04-15 [3] RSPM (R 4.3.0)
#>  bslib         0.7.0   2024-03-29 [3] RSPM (R 4.3.0)
#>  cachem        1.1.0   2024-05-16 [3] RSPM (R 4.4.0)
#>  cli           3.6.2   2023-12-11 [3] RSPM (R 4.3.0)
#>  curl          5.2.1   2024-03-01 [3] RSPM (R 4.3.0)
#>  digest        0.6.35  2024-03-11 [3] RSPM (R 4.3.0)
#>  evaluate      0.23    2023-11-01 [3] RSPM (R 4.3.0)
#>  fastmap       1.2.0   2024-05-15 [3] RSPM (R 4.4.0)
#>  fs            1.6.4   2024-04-25 [3] RSPM (R 4.3.0)
#>  glue          1.7.0   2024-01-09 [3] RSPM (R 4.3.0)
#>  highr         0.11    2024-05-26 [3] RSPM (R 4.4.0)
#>  htmltools     0.5.8.1 2024-04-04 [3] RSPM (R 4.3.0)
#>  jquerylib     0.1.4   2021-04-26 [3] RSPM (R 4.3.2)
#>  jsonlite      1.8.8   2023-12-04 [3] RSPM (R 4.3.0)
#>  knitr         1.47.2  2024-06-04 [1] Github (yihui/knitr@f50b75b)
#>  lifecycle     1.0.4   2023-11-07 [3] RSPM (R 4.3.0)
#>  magrittr      2.0.3   2022-03-30 [3] RSPM (R 4.2.0)
#>  purrr         1.0.2   2023-08-10 [3] RSPM (R 4.2.0)
#>  R.cache       0.16.0  2022-07-21 [3] RSPM (R 4.2.0)
#>  R.methodsS3   1.8.2   2022-06-13 [3] RSPM (R 4.2.0)
#>  R.oo          1.26.0  2024-01-24 [3] RSPM (R 4.3.0)
#>  R.utils       2.12.3  2023-11-18 [3] RSPM (R 4.3.0)
#>  R6            2.5.1   2021-08-19 [3] RSPM (R 4.2.0)
#>  reprex        2.1.0   2024-01-11 [3] RSPM (R 4.3.0)
#>  rlang         1.1.3   2024-01-10 [3] RSPM (R 4.3.0)
#>  rmarkdown     2.27    2024-05-17 [3] RSPM (R 4.4.0)
#>  rstudioapi    0.16.0  2024-03-24 [3] RSPM (R 4.3.0)
#>  sass          0.4.9   2024-03-15 [3] RSPM (R 4.3.0)
#>  sessioninfo   1.2.2   2021-12-06 [3] RSPM (R 4.2.0)
#>  styler        1.10.3  2024-04-07 [3] RSPM (R 4.3.0)
#>  vctrs         0.6.5   2023-12-01 [3] RSPM (R 4.3.0)
#>  withr         3.0.0   2024-01-16 [3] RSPM (R 4.3.2)
#>  xfun          0.44    2024-05-15 [3] RSPM (R 4.4.0)
#>  xml2          1.3.6   2023-12-04 [3] RSPM (R 4.3.0)
#>  yaml          2.3.8   2023-12-11 [3] RSPM (R 4.3.0)
#> 
#>  [1] /home/floris/lib/R/library
#>  [2] /usr/local/lib/R/site-library
#>  [3] /usr/lib/R/site-library
#>  [4] /usr/lib/R/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────

This is not an extension of #1052, this is a duplicate. Same observation: output_dir configuration in bookdown is for book format. bookdown::html_document2 and any other single document variants are not considered book and do not support this configuration. They also can be rendered using rmarkdown::render() directly.

It would be an enhancement to add this feature, which is what #1052 is about. Not sure about which side effect this could have...

Duplicate of #1052

Thanks for clarifying. Indeed, it appears that bookdown::html_book does respect output_dir.

Feel free to close this one.