## 前提 - 画像ファイルはすべて `<root>/public/attachments/` ディレクトリ配下に置く - 特に **`public` 配下はシステム制約上必須** - そうしないとデプロイしたときに参照できない ### 環境 | 対象 | バージョン | | ---------- | ------- | | [[Slidev]] | 52.15.2 | ## 一覧 | 対象 | パスの開始 | | ---------------------------------- | ----------------------- | | [[#HTMLの `src` 属性]] | `./public/attachments/` | | [[#Vueファイル内の `src` 属性 に渡されるprops]] | `./attachments/` | | [[#フロントマターのプロパティ]] | `/attachments/` | | [[#Markdownの画像リンク]] | `/attachments/` | | [[#CSSの `url`]] | `/attachments/` | ## フロントマターのプロパティ **`/attachments/` 開始** にする。 ```yaml background: /attachments/sample.webp ``` 以下はすべてNG。 ```yaml background: ./attachments/sample.webp background: attachments/sample.webp background: ./public/attachments/sample.webp background: /public/attachments/sample.webp background: public/attachments/sample.webp ``` ## HTMLの `src` 属性 **`./public/attachments/` 開始** にする。`img` 以外に `source` タグなども同様。 ```html <img src="./public/attachments/sample.webp" /> ``` 以下はすべてNG。 ```html <img src="/public/attachments/sample.webp" /> <img src="public/attachments/sample.webp" /> <img src="./attachments/sample.webp" /> <img src="/attachments/sample.webp" /> <img src="attachments/sample.webp" /> ``` > [!hint]- 警告は無視してよい > `pnpm dev` `pnpm build` には差し支えないのでスルーで問題ない。逆に `/public` を削除するとビルドエラーになる。 > > ```warning > Files in the public directory are served at the root path. > Instead of /public/attachments/colot.mp4, use /attachments/colot.mp4. > ``` > > たとえば > > ```html > <div class="h-140 overflow-hidden"> > <img src="./attachments/cat-minerva.webp" class="block" /> > </div> > ``` > > とすると > > ```error > [UNRESOLVED_IMPORT] Could not resolve './attachments/cat-minerva.webp' in slides.md__slidev_11.md > ╭─[ slides.md__slidev_11.md:2:24 ] > │ > 2 │ import _imports_0 from './attachments/cat-minerva.webp' > │ ────────────────┬─────────────── > │ ╰───────────────── Module not found. > ``` ## Vueファイル内の `src` 属性 に渡されるprops **`./attachments/` 開始** にする。 ```html <Bubble image="./attachments/sample.webp" /> ``` 以下はすべてNG。 ```html <Bubble image="./public/attachments/sample.webp" /> <Bubble image="/public/attachments/sample.webp" /> <Bubble image="public/attachments/sample.webp" /> <Bubble image="/attachments/sample.webp" /> <Bubble image="attachments/sample.webp" /> ``` `components/Bubble.vue` の実装イメージ。 ```html <script setup lang="ts"> defineProps<{ image: string; }>(); </script> <template> <img :src="image" /> </template> ``` ## Markdownの画像リンク **`/attachments/` 開始** にする。 ```markdown ![](/attachments/sample.webp) ``` 以下はすべてNG。 ```markdown ![](./public/attachments/sample.webp) ![](/public/attachments/sample.webp) ![](public/attachments/sample.webp) ![](./attachments/sample.webp) ![](attachments/sample.webp) ``` ## CSSの `url` **`/attachments/` 開始** にする。 ```css url("/attachments/sample.webp"); ``` ```css url("./attachments/sample.webp"); url("attachments/sample.webp"); url("./public/attachments/sample.webp"); url("/public/attachments/sample.webp"); url("public/attachments/sample.webp"); ```