Añadir iconos a enlaces externos
Usando un plugin de hast (EN), puedes identificar y modificar enlaces en tus archivos Markdown que apuntan a sitios externos. Este ejemplo añade un icono al final de cada enlace externo para que los visitantes sepan que están saliendo de tu sitio.
Requisitos previos
Sección titulada «Requisitos previos»- Un proyecto Astro que use Markdown para páginas de contenido.
-
Instala tanto
@astrojs/markdown-sattericomosatteri:Ventana de terminal npm install @astrojs/markdown-satteri satteriVentana de terminal pnpm add @astrojs/markdown-satteri satteriVentana de terminal yarn add @astrojs/markdown-satteri satteri -
Crea un plugin de
hastde Sätteri que añada un icono si el enlace empieza conhttp:src/hast/hast-external-links.ts import { defineHastPlugin } from 'satteri';export const hastExternalLinks = defineHastPlugin({name: "hast-external-links",element: {filter: ["a"],visit(node, context) {if (node.properties.href?.startsWith("http")) {context.appendChild(node, {type: "element",tagName: "span",properties: { ariaHidden: "true" },children: [{type: "text",value: "🔗",},],});}},},}); -
Configura el plugin en tu archivo
astro.config.mjs.Importa
satteri()y defínelo como el procesador de Markdown (EN) para añadir plugins personalizados de Sätteri. Luego, pasa ahastPluginsun array que contenga tu pluginhastExternalLinksimportado.astro.config.mjs import { satteri } from '@astrojs/markdown-satteri';import { defineConfig } from 'astro/config';import { hastExternalLinks } from './src/hast/hast-external-links';export default defineConfig({markdown: {processor: satteri({hastPlugins: [hastExternalLinks],}),},});
-
Instala tanto el plugin
rehype-external-linkscomo@astrojs/markdown-remark.Ventana de terminal npm install rehype-external-links @astrojs/markdown-remarkVentana de terminal pnpm add rehype-external-links @astrojs/markdown-remarkVentana de terminal yarn add rehype-external-links @astrojs/markdown-remark -
Configura el plugin en tu archivo
astro.config.mjs.Importa
unified()y defínelo como el procesador de Markdown (EN) para dar soporte a plugins de remark. Luego, pasa arehypePluginsun array que contenga tu pluginrehypeExternalLinksimportado y un objeto de opciones con una propiedadcontent. Establece eltypede esta propiedad entextsi quieres añadir texto plano al final del enlace. Para añadir HTML al final del enlace en su lugar, establece la propiedadtypeenraw.astro.config.mjs import { unified } from '@astrojs/markdown-remark';import { defineConfig } from 'astro/config';import rehypeExternalLinks from 'rehype-external-links';export default defineConfig({markdown: {processor: unified({rehypePlugins: [[rehypeExternalLinks,{content: { type: 'text', value: ' 🔗' }}],]}),},});