rsmith is inspired by metalsmith, which is a static site generator for node with a very simple API, based almost entirely on plugins. rsmith has a functional API, which when combined with magrittr, provides a pretty nice declarative specification:
rsmith("src", "dest") %>%
use(markdown()) %>%
use(whisker()) %>%
build()Possibly the coolest feature is that it uses Shiny's reactivity to cache interim results. This means that if you use watch() instead of build(), rsmith will watch for changes on disk and will do the minimal amount of work to update the site:
rsmith("src", "dest") %>%
use(markdown()) %>%
use(whisker()) %>%
watch()-
markdown(): render.mdto.htmlwith the markdown package. -
rmarkdown(): render.Rmdto.html,.pdfor.docwith rmarkdown. -
use
brew()orwhisker()templates -
ignore_draft(),ignore_files(): ignore files based on either metadata or path
Rsmith adheres to the spirit of metalsmith, but is written in idiomatic R. This means that it:
-
Has a more functional flavour so you can use it with the pipe operation from magrittr.
-
Stores the file path in the metadata rather than as the object name. This makes it easier to use
lapply()rather than for loops. -
More plugins are built-in to the package because R packages are usually heavier than npm packages.
