D.3 Construyendo un sitio web para vista previa local
La función blogdown::build_site()
tiene un argumento local
que por defecto es FALSE
, lo que significa construir el sitio web para publicación en lugar de vista previa local. El modo local = TRUE
es principalmente para blogdown::serve_site()
para presentar el sitio web localmente. Hay tres diferencias principales entre local = FALSE
y TRUE
. Cuando local = TRUE
:
La opción
baseurl
enconfig.toml
se reemplaza temporalmente por"/"
aunque haya configurado una URL completa como"http://www.example.com/"
.44 es porque cuando un sitio web se va a obtener una vista previa localmente, los enlaces deben hacer referencia a los archivos locales. Por ejemplo, se debe usar/about/index.html
en lugar del enlace completohttp://www.example.com/about/index.html
; la funciónserve_site()
sabe que/about/index.html
significa el archivo bajo el directoriopublic/
, y puede buscarlo y mostrarle el contenido, de lo contrario, su navegador lo llevará al sitio webhttp://www.example.com
en lugar de mostrar un archivo local.Las publicaciones en borrador y futuras siempre se muestran cuando
local = TRUE
, pero no cuandolocal = FALSE
. Esto es para que pueda obtener una vista previa del borrador y futuras publicaciones localmente. Si conoce la línea de comandos de Hugo significa que se llama al comandohugo
con las banderas-D -F
, o equivalentemente,--buildDrafts --buildFuture
.Hay un mecanismo de almacenamiento en caché para acelerar la creación de su sitio web: un archivo Rmd no se volverá a compilar cuando su archivo de salida
*.html
sea más reciente (en términos de tiempo de modificación de archivos). Si desea forzarbuild_site(local = TRUE)
para recompilar el archivo Rmd incluso si es anterior al resultado HTML, debe eliminar el resultado HTML o editar el archivo Rmd para que su hora de modificación sea más reciente. Este mecanismo de almacenamiento en caché no se aplica alocal = FALSE
, es decir,build_site(local = FALSE)
siempre recompilará todos los archivos Rmd, porque cuando desee publicar un sitio, es posible que deba recompilarlo todo para asegurarse de que el sitio está completamente regenerado. Si tiene fragmentos de código que consumen mucho tiempo en cualquier archivo Rmd, debe usar cualquiera de estos métodos para ahorrar tiempo:Active el almacenamiento en caché de knitr para la pérdida de tiempo de los trozos de código, i.e., la opción de chunk
cache = TRUE
.No llame
build_site()
, sinoblogdown::hugo_build()
en su lugar . Este último no compila ningún archivo Rmd, simplemente ejecuta el comandohugo
para construir el sitio. Utilice este método solo si está seguro de que sus archivos Rmd no necesitan ser recompilados.
No necesita preocuparse por estos detalles si su sitio web se genera automáticamente desde la fuente a través de un servicio como Netlify, que hará uso de baseurl
y no usar -D -F
de forma predeterminada. Si publica manualmente la carpeta public/
, debe tener más cuidado:
Si su sitio web no funciona sin el
baseurl
completo, o si no desea que se publiquen los borradores o las publicaciones futuras, no debe publicar el directoriopublic/
generado porserve_site()
. Siempre ejecuteblogdown::build_site()
oblogdown::hugo_build()
antes de subir este directorio a un servidor web.Si sus borradores y publicaciones futuras contienen información (sensible al tiempo), se recomienda mucho eliminar el directorio
/public/
antes de reconstruir el sitio para publicarlo todo el tiempo, porque Hugo nunca lo elimina, y su información confidencial puede ser presentada por una determinada llamadabuild_site(local = TRUE)
la última vez y la dejarla en el directorio. Si el sitio web es realmente importante, y necesita asegurarse de que no se arruinará nada cada vez que lo publique, coloque el directorio/public/
bajo control de versiones, para que pueda ver qué archivos se cambiaron antes de publicar el nuevo sitio.
Si su
baseurl
contiene un subdirectorio, será reemplazado por el nombre del subdirectorio. Por ejemplo, parabaseurl=" http://www.example.com/project/ "
,build_site(local =TRUE)
eliminará temporalmente el nombre de dominio y solo usará el valor/project/
.↩