2.7 Archivos estáticos

Todos los archivos bajo el directorio static/ se copian a public/ cuando Hugo procesa un sitio web. Este directorio se usa a menudo para almacenar archivos web estáticos como imágenes, CSS y archivos de JavaScript. Por ejemplo, una imagen static/foo/bar.png se puede incrustar en su publicación usando la sintaxis Markdown ![](/foo/bar.png).27

Por lo general, un tema tiene una carpeta static/, y puede anular parcialmente sus archivos utilizando el mismo mecanismo que reemplaza a los layouts/ archivos, es decir, static/file anulará themes/theme-name/static/file . En el tema XMin, tengo dos archivos CSS style.css y fonts.css. El primero es la hoja de estilo principal, y el último es un archivo bastante pequeño para definir tipos de letra solamente. Es posible que desee definir sus propios tipos de letra, y solo puede proporcionar un static/css/fonts.css para anular el del tema, por ejemplo,

Para los usuarios de R Markdown, otra aplicación importante del directorio static/ es construir documentos Rmd con formatos de salida personalizados, es decir, documentos Rmd que no utilizan el formato blogdown::html_page() (ver sección ??). Por ejemplo, puede generar un PDF o presentaciones de documentos Rmd en este directorio, para que Hugo no los postprocesa, sino que simplemente los copie en public/ para su publicación. Para compilar estos archivos Rmd, debe proporcionar un script de compilación personalizado R/build.R (consulte la sección D.9). Puede escribir una sola línea de código en este script:

La función build_dir() busca todos los archivos Rmd bajo un directorio y llama a rmarkdown::render() para compilarlos en los formatos de salida especificados en los metadatos YAML de los archivos Rmd. Si sus archivos Rmd no se deben presentar con una simple llamada rmarkdown::render(), puede proporcionar su propio código para presentarlos en R/build.R. Hay un mecanismo de caché integrado en la función dir_desarrollo(): un archivo Rmd no se compilará si es anterior a su archivo(s) de salida. Si no desea este comportamiento, puede obligar a todos los archivos Rmd a volver a compilarse cada vez: build_dir(force = TRUE).

He proporcionado un ejemplo mínimo en el repositorio de GitHub yihui/blogdown-static, donde puede encontrar dos ejemplos de Rmd en el directorio static/. Una es una presentación HTML5 basada en el paquete xaringan, y la otra es un documento PDF basado en bookdown.

Debe tener precaución con los archivos arbitrarios en static/, debido al mecanismo predominante de Hugo. Es decir, todo en static/ se copiará en public/. Debe asegurarse de que los archivos que procesa en static/ no entrarán en conflicto con los archivos generados automáticamente por Hugo a partir de content/. Por ejemplo, si tiene un archivo fuente content/about.md y un archivo Rmd static/about/index.Rmd al mismo tiempo, el resultado HTML de este último sobrescribirá el anterior (tanto Hugo como usted generarán un archivo de salida con el mismo nombre public/about/index.html).


  1. El enlace de la imagen depende de su configuración baseurl en config.toml. Si no contiene un subtrayecto, /foo/bar.png será el enlace de la imagen; de lo contrario, tendrá que ajustarlo, por ejemplo, para baseurl = "http://example.com/subpath/", el enlace a la imagen debe ser /subpath/foo/bar.png.