5.2 Hexo
Las ideas de usar Hexo (https://hexo.io) son muy similares a las que hemos aplicado a Jekyll en la sección anterior. También preparé un ejemplo mínimo en el repositorio de GitHub yihui/blogdown-hexo.
Los componentes claves de este repositorio siguen siendo .Rprofile
, R/build.R
, y R/build_one.R
. Establecimos la opción blogdown.generator
en hexo
, build.method
en custom
, y el subdirectorio predeterminado para las nuevas publicaciones en source/_posts
.
options(
blogdown.generator = 'hexo',
blogdown.method = 'custom',
blogdown.subdir = 'source/_posts'
)
El script R/build.R
es similar al del repositorio blogdown-jekyll
. Las principales diferencias son:
Encontramos todos los archivos Rmd bajo el directorio
source/
en lugar del directorio raíz, porque la convención de Hexo es poner todos los archivos fuente bajosource/
.Llamamos
system2('hexo', 'generate')
para construir el sitio web.
Para el script R/build_one.R
, la principal diferencia con el script en el repositorio blogdown-jekyll
es que establecemos la opción base.dir
para knitr, de modo que se generan todas las figuras en R al directorio fuente/
. Esto se debe a que Hexo copia todo bajo source/
a public/
, mientras que Jekyll copia todo bajo el directorio raíz a _site/
.
local({
# fall back on '/' if baseurl is not specified
baseurl = blogdown:::get_config2('root', '/')
knitr::opts_knit$set(
base.url = baseurl, base.dir = normalizePath('source')
)
# input/output filenames as two arguments to Rscript
a = commandArgs(TRUE)
d = gsub('^source/_?|[.][a-zA-Z]+$', '', a[1])
knitr::opts_chunk$set(
fig.path = sprintf('figure/%s/', d),
cache.path = sprintf('cache/%s/', d)
)
knitr::knit(
a[1], a[2], quiet = TRUE, encoding = 'UTF-8', envir = .GlobalEnv
)
})
Este repositorio también se crea automáticamente y se implementa a través de Netlify cuando le envío cambios. Como Hexo es un paquete de Node y Netlify es compatible con Node, puede instalar Hexo fácilmente en Netlify. Por ejemplo, este repositorio de ejemplo usa el comando npm install && hexo generate
para construir el sitio web; npm install
instalará los paquetes de Node especificados en packages.json
(un archivo bajo el directorio raíz del repositorio), y hexo generate
es el comando para construir el sitio web desde source/
a public/
.