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 de terminal npm install @astrojs/markdown-satteri satteriFenêtre de terminal pnpm add @astrojs/markdown-satteri satteriFenêtre de 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 de terminal npm install rehype-external-links @astrojs/markdown-remarkFenêtre de terminal pnpm add rehype-external-links @astrojs/markdown-remarkFenêtre de 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: ' 🔗' }}],]}),},});