Ajouter des icônes aux liens externes
En utilisant un module d’extension hast, vous pouvez identifier et modifier les liens dans vos fichiers Markdown qui pointent vers des sites externes. Cet exemple ajoute une icône à la fin de chaque lien externe, afin que les visiteurs sachent qu’ils quittent votre site.
Prérequis
Section intitulée « Prérequis »- Un projet Astro utilisant Markdown pour les pages de contenu.
-
Installez à la fois
@astrojs/markdown-satterietsatteri:Fenêtre du terminal npm install @astrojs/markdown-satteri satteriFenêtre du terminal pnpm add @astrojs/markdown-satteri satteriFenêtre du terminal yarn add @astrojs/markdown-satteri satteri -
Créez un module d’extension
hastpour Sätteri qui ajoute une icône si le lien commence parhttp: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: "🔗",},],});}},},}); -
Configurez le module d’extension dans votre fichier
astro.config.mjs.Importez
satteri()et définissez-le en tant que processeur Markdown pour ajouter des modules d’extension personnalisés à Sätteri. Ensuite, transmettez àhastPluginsun tableau contenant votre module d’extensionhastExternalLinksimporté.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],}),},});
-
Installez à la fois le module d’extension
rehype-external-linkset@astrojs/markdown-remark.Fenêtre du terminal npm install rehype-external-links @astrojs/markdown-remarkFenêtre du terminal pnpm add rehype-external-links @astrojs/markdown-remarkFenêtre du terminal yarn add rehype-external-links @astrojs/markdown-remark -
Configurez le module d’extension dans votre fichier
astro.config.mjs.Importez
unified()et définissez-le en tant que processeur Markdown pour prendre en charge les modules d’extension remark. Ensuite, transmettez àrehypePluginsun tableau contenant votre module d’extensionrehypeExternalLinksimporté et un objet d’options avec une propriétécontent. Définissez letypede cette propriété surtextsi vous souhaitez ajouter du texte brut à la fin du lien. Pour ajouter du HTML à la fin du lien à la place, définissez la propriététypesurraw.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: ' 🔗' }}],]}),},});