skip to content
鰭狀漏斗

Astro 5.4 兩個關於 Markdown 圖片的新功能

/ 閱讀時間 3 分鐘

目次

在上星期發佈的 Astro 5.4,剛好有兩個關於 Markdown 中圖片的新功能,都是 PolyWolf 做出來的,分別是:

  1. Markdown 中外部圖片的最佳化
  2. Markdown 中的響應式圖片支援

這次我要介紹的就是 Astro 5.4 更新項目中的這兩項。

Markdown 中外部圖片的最佳化

Astro 中的圖片最佳化就是把圖片原始檔做壓縮,讓大小變小,讀取會比較快。以前如果連結的是網路上的圖片,Astro 不會處理。例如如果 Markdown 裡有:

![Armadillo](https://images.unsplash.com/photo-1624647879166-1acf407afc89)

產生的 HTML 會是:

<img src="https://images.unsplash.com/photo-1624647879166-1acf407afc89" alt="Armadillo" />

這次的更新會讓這種網路上的圖片也會經過處理,Astro 會將圖片下載起來做最佳化處理。不過前提是圖片網址符合 image.domainsimage.remotePatterns 的設定,例如可能要有這個設定,上面的圖片才會被最佳化:

astro.config.js
import { defineConfig } from "astro";
export default defineConfig({
image: {
domains: ["images.unsplash.com"]
}
});

Markdown 中的響應式圖片支援

響應式圖片就是為圖片提供多個尺寸的版本,讓瀏覽器選一個最符合顯示尺寸的版本。好處是對螢幕解析度小的行動裝置來說,不需要下載檔案大小比較大的原尺寸圖片,可以加快讀取速度。

<Image><Picture> 元件都可以產生響應式圖片後,以 Markdown 語法引用的圖片原本還是只會轉成大小相同的 WEBP 檔。在這次更新後,以 Markdown 語法引用的圖片終於也可以產生響應式圖片了。

要產生響應式圖片,要在設定加入:

astro.config.js
import { defineConfig } from "astro";
export default defineConfig({
image: {
experimentalLayout: "responsive"
},
experimental: {
responsiveImages: true
}
});

目前並沒有設定單獨一張 Markdown 中的圖片為響應式圖片的方法,如果照上面設定了,所有以 Markdown 語法引用的圖片都會是響應式圖片。

參考資料