@astrojs/mdx
Esta integración de Astro permite el uso de componentes MDX y te permite crear páginas como archivos .mdx
.
¿Por qué MDX?
Sección titulada ¿Por qué MDX?MDX te permite usar variables, expresiones JSX y componentes dentro del contenido Markdown en Astro. Si tienes contenido existente escrito en MDX, esta integración te permite traer esos archivos a tu proyecto de Astro.
Instalación
Sección titulada InstalaciónInstalación rápida
Sección titulada Instalación rápidaLa herramienta de línea de comandos astro add
automatiza la instalación por ti. Ejecuta uno de los siguientes comandos en una nueva ventana de terminal. (Si no estás seguro de qué gestor de paquetes estás usando, ejecuta el primer comando.) Luego, sigue las instrucciones y escribe “y” en la terminal (es decir, “sí”) para cada uno.
Si tienes algún problema, no dudes en informarnos en GitHub y prueba los pasos de instalación manual a continuación.
Instalación Manual
Sección titulada Instalación ManualPrimero, instala el paquete @astrojs/mdx
usando tu gestor de paquetes. Si estás usando npm o no estás seguro, ejecuta lo siguiente en la terminal:
Luego, aplica esta integración a tu archivo astro.config.*
usando la propiedad integrations
:
Integración del Editor
Sección titulada Integración del EditorPara soporte en VS Code, instala la extensión oficial de MDX.
Para otros editores, usa el servidor de lenguaje MDX.
Con la integración MDX de Astro, puedes añadir páginas MDX a tu proyecto añadiendo archivos .mdx
dentro de tu directorio src/pages/
. También puedes importar archivos .mdx
en archivos .astro
.
La integración MDX de Astro agrega características adicionales a MDX estándar, incluyendo el frontmatter estilo Markdown. Esto te permite utilizar la mayoría de las características de Markdown incorporadas en Astro, como una propiedad especial de frontmatter layout
.
Consulta cómo funciona MDX en Astro con ejemplos en nuestra guía de Markdown y MDX.
Visita la documentación de MDX para aprender sobre el uso de las características estándar de MDX.
Configuración
Sección titulada ConfiguraciónUna vez que la integración MDX esté instalada, no es necesario ninguna configuración adicional para utilizar archivos .mdx
en tu proyecto Astro.
Puedes configurar cómo se renderiza tu MDX con las siguientes opciones:
Opciones heredadas de la configuración de Markdown
Sección titulada Opciones heredadas de la configuración de MarkdownTodas las opciones de configuración de markdown
excepto drafts
pueden ser configuradas por separado en la integración MDX. Esto incluye plugins de remark y rehype, resaltado de sintaxis y más. Las opciones se establecerán por defecto con las de tu configuración de Markdown (consulta la opción extendMarkdownConfig
para modificar esto).
No hay una configuración de MDX separada para incluir páginas marcadas como borrador en la compilación. Esta configuración de Markdown será respetada tanto por archivos de Markdown como de MDX y no se puede anular específicamente para archivos de MDX.
MDX no admite pasar plugins de remark y rehype como una cadena. En su lugar, debes instalar, importar y aplicar la función del plugin.
📚 Consulta la referencia de opciones de Markdown para ver una lista completa de opciones.
extendMarkdownConfig
Sección titulada extendMarkdownConfig- Tipo:
boolean
- Por defecto:
true
Por defecto, MDX extenderá la configuración de Markdown existente en tu proyecto. Para anular opciones individuales, puedes especificar su equivalente en la configuración de MDX.
Por ejemplo, digamos que necesitas desactivar el Markdown con formato de GitHub y aplicar un conjunto diferente de plugins de remark para archivos MDX. Puedes aplicar estas opciones de la siguiente manera, con extendMarkdownConfig
habilitado de forma predeterminada:
También es posible que necesites deshabilitar la extensión de configuración markdown
en MDX. Para ello, establece extendMarkdownConfig
en false
:
recmaPlugins
Sección titulada recmaPluginsEstos son plugins que modifican directamente la salida estree. Esto es útil para modificar o inyectar variables JavaScript en tus archivos MDX.
Sugerimos utilizar AST Explorer para experimentar con las salidas de estree y probar estree-util-visit
para buscar entre nodos de JavaScript.
optimize
Sección titulada optimize- Tipo:
boolean | { customComponentNames?: string[] }
Esta es una configuración opcional para optimizar la salida de MDX y acelerar las compilaciones y el renderizado mediante un plugin interno de rehype. Esto puede ser útil si tienes muchos archivos MDX y notas que las compilaciones son lentas. Sin embargo, esta opción puede generar HTML no escapado, por lo que asegúrate de que las partes interactivas de tu sitio sigan funcionando correctamente después de habilitarla.
Esto está desactivado de forma predeterminada. Para habilitar la optimización de MDX, agrega lo siguiente a la configuración de integración de MDX:
customComponentNames
Sección titulada customComponentNames- Tipo:
string[]
Una propiedad opcional de optimize
para evitar que el optimizador de MDX maneje cualquier componente personalizado pasado al contenido de MDX importado a través de la prop components
.
Deberás excluir estos componentes de la optimización, ya que el optimizador convierte el contenido en una cadena estática de forma anticipada, lo cual romperá los componentes personalizados que necesitan ser renderizados de forma dinámica.
Por ejemplo, la salida de MDX prevista para lo siguiente sería <Heading>...</Heading>
en lugar de cada "<h1>...</h1>"
:
Para configurar la optimización de esto utilizando la propiedad customComponentNames
, especifica un arreglo de nombres de elementos HTML que deben tratarse como componentes personalizados:
Ten en cuenta que si tu archivo MDX configura componentes personalizados usando export const components = { ... }
, entonces no necesitas configurar esta opción manualmente. El optimizador los detectará automáticamente.
Ejemplos
Sección titulada Ejemplos- La plantilla de inicio Astro MDX muestra cómo utilizar archivos MDX en tu proyecto Astro.
Solución de problemas
Sección titulada Solución de problemasPara obtener ayuda, consulta el canal #support
en Discord. ¡Nuestros amables miembros del Equipo de Soporte están aquí para ayudar!
También puedes consultar nuestra documentación de integración de Astro para obtener más información sobre las integraciones.
Contribuyendo
Sección titulada ContribuyendoEste paquete es mantenido por el equipo central de Astro. ¡Estás invitado a enviar un issue o una PR!
Changelog
Sección titulada ChangelogConsulta el CHANGELOG.md para un historial de cambios en esta integración.