在開發 Nuxt 時,通常我們會使用 public
和 assets
這兩個資料夾來區分不同類型的靜態資源,存放在 assets
的檔案會經過 Vite 或 webpack 打包,適合放需要處理的圖片或 CSS;而存放在 public
的檔案則是不經過打包的過程,直接暴露在根目錄底下,適合存放網站的 logo、favicon 等。
接下來,我要將這個 public
資料夾的引入進模組內,讓使用者直接使用 module w提供的靜態資源。
step 1: 在模組中配置 nitroConfig.publicAssets
在模組中,我們需要先配置 nitroConfig.publicAssets
來公開 public
資料夾的內容。這裡我順便設定了快取時間,讓圖片可以緩存一年
/** 裝入自己定義的 assets */ //
nuxt.hook('nitro:config', async (nitroConfig) => {
// 一開始如果 publicAssets 不存在的話就設定成空 array
nitroConfig.publicAssets ||= []
nitroConfig.publicAssets.push({
dir: resolver.resolve('./runtime/public'),
maxAge: 60 * 60 * 24 * 365, //圖片緩存時間
})
})
step 2: 在模組的 src/runtime
目錄下創建一個 public
資料夾,並準備一張 favicon 圖片丟進去。(比如我丟了一張 seal.ico)
step 3: 到 playground/nuxt.config.ts
中加入以下設定
app: {
head: {
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/seal.ico' }
]
}
}
這裡如果設定完後 favicon 沒有變換,不要急!先檢查一下路徑是否正確,或者試試清除瀏覽器的快取,應該就能看到效果啦~