8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Svelteの画像最適化ライブラリが公式からリリースされたので使ってみる!

Last updated at Posted at 2023-12-05

はじめに

Svelteの画像最適化ライブラリがSvelte公式から2023年11月にリリースされました!
現時点ではexperimentalですが、Svelte/SvelteKitを使ってWebサイトを作る上でとても便利なので使ってみたいと思います。

インストール

動作条件としては、Viteを使っていればSvelteKit以外でも動作するようです。

npm install --save-dev @sveltejs/enhanced-img
vite.config.js
import { sveltekit } from '@sveltejs/kit/vite';
+ import { enhancedImages } from '@sveltejs/enhanced-img';
import { defineConfig } from 'vite';

export default defineConfig({
	plugins: [
+		enhancedImages(),
		sveltekit()
	]
});

使い方

通常の<img>タグを使用する代わりに<enhanced:img>タグを使用します。

<enhanced:img src="./path/to/your/image.jpg" alt="An alt text" />

ビルド時に<enhanced:img>タグは、複数の画像タイプとサイズを提供する<picture>でラップされた<img>に置き換えられますので高画質な画像を用意する必要があります。

以下のように変換されます。

<picture>
  <source srcset="/_app/immutable/assets/sveltejapan.57eed46e.avif 1x, /_app/immutable/assets/sveltejapan.c6b2fccb.avif 2x" type="image/avif">
  <source srcset="/_app/immutable/assets/sveltejapan.7ec56f0d.webp 1x, /_app/immutable/assets/sveltejapan.b0bb76f5.webp 2x" type="image/webp">
  <source srcset="/_app/immutable/assets/sveltejapan.b4e6b5a6.jpg 1x, /_app/immutable/assets/sveltejapan.32070fb0.jpg 2x" type="image/jpeg">
  <img src="/_app/immutable/assets/sveltejapan.32070fb0.jpg" alt="Some alt text" width="512" height="512">
</picture>

ビルドした中身を見てみるとそれぞれの画像タイプとサイズが生成されていることがわかります。

スクリーンショット 2023-12-04 23.51.24.png

その他、詳しい使い方はドキュメントを確認してください。

さいごに

これからも@sveltejs/enhanced-imgの改良を続け、CDNサポートなどの機能を追加していく予定みたいです。
実際のアプリケーションではCMSからアップロードされた画像等もあると思うので今後のアップデートに期待ですね!

8
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?