D.5 Rutas de figuras y otras dependencias {# dep-path}
Una de las tareas más desafiantes en el desarrollo del paquete blogdown es manejar adecuadamente los archivos de dependencia de las páginas web. Si todas las páginas de un sitio web estuvieran en texto plano sin dependencias como imágenes o librerías de JavaScript, hubiera sido mucho más fácil desarrollar el paquete blogdown.
Después de que blogdown compila cada documento Rmd en HTML, intentará detectar las dependencias (si las hay) del código fuente HTML y las copiará en la carpeta static/
, para que Hugo las copie luego en public/
. La detección depende de las rutas de las dependencias. De forma predeterminada, todas las dependencias, como las representaciones R y las librerías para HTML widgets, se generan en el directorio foo_files/
si la Rmd se llama foo.Rmd
. Específicamente, los gráficos R se generan a foo_files/figure-html/
y el resto de los archivos bajo foo_files/
son típicamente de HTML widgets.
Los gráficos de R bajo content/*/foo_files/figure-html/
se copian a static/*/foo_files/figure-html/
, y las rutas en las etiquetas HTML como <img src="foo_files/figure-html/bar.png"/>
se sustituyen por /*/foo_files/figure-html/bar.png
. Tenga en cuenta que la barra diagonal indica el directorio raíz del sitio web publicado, y la sustitución funciona porque Hugo copiará */foo_files/figure-html/
de static/
a public/
.
Cualquier otro archivo bajo foo_files/
se trata como archivo de dependencia de HTML widgets, y se copiará a static/rmarkdown-libs/
. Las rutas originales en HTML también serán sustituidos en consecuencia, por ejemplo, del <script src = "foo_files/jquery/jquery.min.js">
a <script src ="/rmarkdown-libs/jquery/jquery.min.js ">
. No importa si estos archivos son generados por HTML widgets o no. Los enlaces en el sitio web publicado serán correctos y normalmente ocultos a los lectores de las páginas.45
No debe modificar la opción knitr chunk fig.path
o cache.path
a menos que el proceso anterior sea completamente claro para usted, y quiera manejar las dependencias usted mismo.
En los casos poco frecuentes en los que blogdown no detecta y copia algunas de sus dependencias (p. ej., osó un paquete de HTML widgets bastante sofisticado que escribe archivos en rutas personalizadas), tiene dos opciones posibles:
No ignore
_files$
en la opciónignoreFiles
enconfig.toml
, no personalice la opciónpermalinks
, y configure la opciónuglyURLs
entrue
. De esta forma, blogdown no sustituirá las rutas que no puede reconocer, y Hugo copiará estos archivos apublic/
. Las ubicaciones de archivo relativas del archivo*.html
y sus dependencias seguirán siendo las mismas cuando se copien enpublic/
, de modo que todos los enlaces continuarán funcionando.Si elige ignorar
_files$
o ha personalizado la opciónpermalinks
, debe asegurarse de que blogdown pueda reconocer las dependencias. Un enfoque es usar la ruta devuelta por la función auxiliarblogdown::dep_path()
para escribir archivos de dependencia adicionales. Básicamente, esta función devuelve la opción actualfig.path
en knitr, que por defecto es*_files/figure-html/
. Por ejemplo, puede generar un trazado manualmente bajodep_path()
, y blogdown lo procesará automáticamente (copie el archivo y sustituya la ruta de la imagen).
Si no entiende todos estos detalles técnicos, le recomendamos que use la primera opción, y deberá sacrificar los enlaces permanentes personalizados y las URL limpias (por ejemplo, /about.html
en lugar de /about/
). Con esta opción, también puede personalizar la opción fig.path
para fragmentos de código si lo desea.
Por ejemplo, un lector no verá la etiqueta
<script>
en una página, por lo que realmente no importa lo que su atributosrc
parece siempre que sea una ruta que realmente existe.↩