4.1 Desde Jekyll

Al convertir un sitio web de Jekyll en Hugo, la parte más desafiante es el tema. Si desea mantener exactamente el mismo tema, deberá volver a escribir las plantillas de Jekyll utilizando la sintaxis de Hugo (consulte la sección ??). Sin embargo, si puede encontrar un tema existente en Hugo (https://themes.gohugo.io), las cosas serán mucho más fáciles, y usted solo necesita mover el contenido de su sitio web a Hugo, lo cual es relativamente fácil. Básicamente, copie las páginas y publicaciones de Markdown en el directorio content/ en Hugo y modifique estos archivos de texto.

Usualmente, las publicaciones en Jekyll están bajo el directorio _posts/, y puedes moverlas a content/post/ (puede usar otros directorios). Luego, debe definir una regla personalizada para las URL permanentes en config.toml (consulte la sección 2.2.2):

Esto depende del formato de las URL que utilizó en Jekyll (consulte la opción permalink en su _config.yml).

Si hay archivos estáticos como imágenes, se pueden mover al directorio static/ en Hugo.

Luego necesita usar su herramienta favorita con algunas técnicas de manipulación de cadenas de caracteres para procesar todos los archivos Markdown. Si usa R, puede listar todos los archivos Markdown y procesarlos uno por uno en un bucle. A continuación se muestra un boceto del código:

La función process_file() es una función auxiliar interna en blogdown. Se necesita un nombre de archivo y una función de procesador para manipular el contenido del archivo y escribe el texto modificado de nuevo en el archivo.

Para darle una idea de cómo puede ser una función de procesador, proporcioné algunas funciones simples de ayuda en blogdown, y a continuación hay dos de ellas:

function (f) 
process_file(f, function(x) {
    x = paste(gsub("\\s+$", "", x), collapse = "\n")
    trim_ws(gsub("\n{3,}", "\n\n", x))
})
<environment: namespace:blogdown>
function (f) 
process_file(f, function(x) {
    gsub("\\[([^]]+)]\\(\\1/?\\)", "<\\1>", x)
})
<environment: namespace:blogdown>

La primera función sustituye dos o más líneas vacías con una sola línea vacía. La segunda función reemplaza los enlaces de la forma [url](url) con <url>. Sin embargo, no hay nada de malo con las líneas vacías excesivas o la sintaxis [url](url). Estas funciones auxiliares pueden hacer que su texto de Markdown sea un poco más limpio. Puede encontrar todas las funciones auxiliares en https://github.com/rstudio/blogdown/blob/master/R/clean.R. Tenga en cuenta que no se exportan de blogdown, por lo que necesita tres puntos y coma para acceder a ellos.

Es posible que los metadatos YAML de sus publicaciones no estén completamente limpios, especialmente cuando su sitio web Jekyll se convirtió de un sitio web anterior de WordPress. La función auxiliar interna blogdown:::modify_yaml() puede ayudarlo a limpiar los metadatos. Por ejemplo, a continuación se muestran los metadatos YAML de una publicación de blog de Simply Statistics cuando se creó en Jekyll:

Puede descartar los campos YAML que no son útiles en Hugo. Por ejemplo, solo puede mantener los campos title, author, date, categories y tags, y descartar otros campos. En realidad, es posible que también desee agregar un campo slug que tome el nombre de archivo base de la publicación (sin la fecha inicial). Por ejemplo, cuando el nombre del archivo postal es 2015-07-28-announceing-the-jhu-data-science-hackathon-2015.md, es posible que desee agregar slug: announcing-the-jhu-data-science-hackathon-2015 para asegurarse de que la URL de la publicación en el nuevo sitio siga siendo la misma.

Aquí está el código para procesar los metadatos YAML de todas las publicaciones:

Puede pasar una ruta de archivo a modify_yaml(), definir nuevos valores YAML (o funciones para devolver nuevos valores basados en los valores anteriores) y decidir qué campos conservar (.keep_fields). Puede descartar campos vacíos a través de .keep_empty = FALSE. Los metadatos YAML procesados están a continuación, lo que parece mucho más limpio: