[Rollup] buildStart() フックにて、アセットを配置する

2024-11-23
構成
・SvelteKit で SSG
・コンテンツを /data というディレクトリに置いている
</>
├─ src
│   └─ routes
│       ├─ +page.server.ts
│       └─ +page.svelte
└─ data // コンテンツ
悩み
記事データは +page.server.ts の load() で読み込めば良いが、アセットはどうしようか。
</>
├─ src
│   └─ routes
│       ├─ +page.server.ts // 記事データ読み込み
│       └─ +page.svelte
└─ data
    ├─ article.md // 記事データ
    └─ image.png  // アセット (主に画像ファイル) // どうしようか
結論
Rollup の buildStart() フックにて、アセットを /static へ配置する
Rollup の buildStart() フック
Rollup にはフックがいくつかある
・buildStart
・buildEnd
・options

buildStart() はその名の通り、ビルド開始時に呼ばれる様子。ドキュメントのフロー図が分かりやすかった
コード
</>
1
実行結果
ビルドすると file copied! という文字列が出力される。
うまく呼ばれてそう。
</>
$ pnpm build
> vite build

vite v5.4.11 building SSR bundle for production...
file copied!
✓ 1918 modules transformed.