Nono le petit robot@piefed.socialB to Forum Libre@jlai.luEnglish · 20 days ago[Jeudi Techno] Tu as une question sur du matos, du programme ? T'es au bon endroit. (2026-06-04)media.piefed.socialimagemessage-square5linkfedilinkarrow-up19arrow-down10file-text
arrow-up19arrow-down1image[Jeudi Techno] Tu as une question sur du matos, du programme ? T'es au bon endroit. (2026-06-04)media.piefed.socialNono le petit robot@piefed.socialB to Forum Libre@jlai.luEnglish · 20 days agomessage-square5linkfedilinkfile-text
minus-squareBlackEco@lemmy.blackeco.comlinkfedilinkFrançaisarrow-up1·20 days agoLa semaine dernière, je demandais comment avoir des images optimisées dans du MDX avec Astro sans avoir à importer directement les images dans le MDX. Au final ma solution a été : De créer un composant Image custom qui importe dynamiquement les images (avec une pincée de ComponentProps pour que ça marche en TypeScript) --- import { Image } from "astro:assets"; import type { ComponentProps } from "astro/types"; type Props = Omit<ComponentProps<typeof Image>, "src"> & { src: string; }; const { src, ...props } = Astro.props; const images = import.meta.glob<{ default: ImageMetadata }>("/src/assets/img/**/*.{jpeg,jpg,png,gif,svg}"); --- {/* @ts-expect-error */} <Image src={images[src]()} {...props} /> De remplacer l’élément img par mon composant custom quand je rends le contenu --- import { getEntry, render } from "astro:content"; import CustomImage from "@components/CustomImage.astro"; const { slug } = Astro.params; const entry = await getEntry("blog", slug); const { Content } = await render(entry); --- <Content components={{ img: CustomImage, }} /> Par contre, ça ne marche évidemment que dans les Content Collections, pour les fichiers MDX directement dans src/pages, il faudra importer les images directement, mais c’est déjà moins gênant.
La semaine dernière, je demandais comment avoir des images optimisées dans du MDX avec Astro sans avoir à importer directement les images dans le MDX.
Au final ma solution a été :
ComponentPropspour que ça marche en TypeScript)imgpar mon composant custom quand je rends le contenuPar contre, ça ne marche évidemment que dans les Content Collections, pour les fichiers MDX directement dans
src/pages, il faudra importer les images directement, mais c’est déjà moins gênant.