Grupos de plugins
Mkdocs incluye preinstalado un plugin llamado group
, el cual permite ordenar los otros plugins en grupos y habilitarlos o ignorarlos en función de variables de entorno del sistema anfitrión.
El uso de este plugin proporciona algunas ventajas:
-
Minimizar los tiempos de deploy y de construcción en entornos que no requieren todas las funcionalidades incluidas en el proyecto;
-
Evita el uso de multiples archivos de configuración y también evita su edición en el contexto del despliegue;
-
Permite usar distintas dependencias en función del sistema anfitrión, evitando la instalación obligatoria de todos los plugins en todos los sistemas.
Configuración
El plugin group
funciona agrupando los plugins cuyo uso será condicional.
# archivo "mkdocs.yml"
plugins:
....
- group
enabled: !ENV VARIABLE_ENTORNO
plugins:
- plugin_1
opciones:
....
- plugin_2
opciones:
....
El grupo creado está deshabilitado de manera predeterminada.
Sólo si la variable de entorno elegida existe y además tiene valor true
se habilitarán y configurarán los plugins listados internamente.
Es posible crear varios grupos de plugins en el mismo proyecto, cada uno dependiente de una variable de entorno distinta:
# archivo "mkdocs.yml"
plugins:
# grupo A
- group
enabled: !ENV VARIABLE_1
plugins:
- plugin_1
opciones:
....
- plugin_2
opciones:
....
# grupo B
- group
enabled: !ENV VARIABLE_2
plugins:
- plugin_3
opciones:
....
- plugin_4
opciones:
....
Uso
Supóngase que se requiere hacer el despliegue local (comando serve
).
Para crear la variable de entorno desde BASH y habilitar la ejecución del grupo se hace:
En tanto que para deshabilitarla se le cambia el valor:
La consulta del valor actual de dicha variable se hace desde la misma terminal:
Una alternativa es crear la variable de manera temporal:
Estos métodos sirven también para la construcción del sitio (comando build
).
Ejemplo aplicado: integración continua y exportacion a PDF
Integración continua (CI) y exportacion a PDF
# archivo "mkdocs.yml"
plugins:
# habilitacion por grupo
# grupo Nº1: servidor remoto ('Continuous Integration')
- group:
enabled: !ENV CI
plugins:
# soporte para RSS
- rss:
match_path: "blog/posts/.*"
date_from_meta:
as_creation: date.created
as_update: date.updated
# fechas de repositorio
- git-revision-date-localized:
enabled: true
enable_creation_date: true
type: date # fecha
fallback_to_build_date: true
# Tarjetas PNG automáticas
- social:
cards_layout_options:
background_color: "#9966CC"
# grupo Nº2: entorno local , conversion del sitio a PDF
- group:
# creacion de documento PDF del sitio
enabled: !ENV PDF_EXPORT
plugins:
- pdf-export:
verbose: true # reporte largo por terminal
media_type: print # estilo CSS para impresión
combined: true # renderizar todas las paginas del proyecto