@hilosiva/vite-plugin-image-optimizer
Version:
画像アセットを最適化する Vite 用プラグイン。
110 lines (76 loc) • 2.54 kB
Markdown
# vite-plugin-image-optimizer
ビルド時に [sharp](https://sharp.pixelplumbing.com/) を使って画像を最適化・変換する Vite プラグイン。
## 動作環境
- **Node.js**: 20.19.0 以上(22.12.0 以上推奨)
- **Vite**: 6.x または 7.x
## 特徴
- JPG / PNG / GIF / WebP / AVIF を圧縮
- JPG・PNG から WebP・AVIF を自動生成
- `build.assetsInlineLimit: 0` と組み合わせるとすべての画像に適用できる
## インストール
```bash
# pnpm
pnpm add @hilosiva/vite-plugin-image-optimizer -D
# npm
npm i @hilosiva/vite-plugin-image-optimizer -D
# yarn
yarn add @hilosiva/vite-plugin-image-optimizer -D
```
## 使い方
```ts
import { defineConfig } from "vite";
import { viteImageOptimizer } from "@hilosiva/vite-plugin-image-optimizer";
export default defineConfig({
plugins: [
viteImageOptimizer({
generate: {
preserveExt: true,
},
}),
],
build: {
assetsInlineLimit: 0, // base64 インライン化を無効にすると全画像が対象になる
},
});
```
> **注意**
> `public/` フォルダ内の静的アセットは対象外です。
> また `build.assetsInlineLimit` のデフォルト(4KB)以下の画像はインライン化されるため対象外になります。インライン化を無効にする場合は `assetsInlineLimit: 0` を設定してください。
## オプション
### `supportedExts`
- タイプ: `string[]`
- デフォルト: `[".jpg", ".jpeg", ".png", ".gif", ".webp", ".avif"]`
最適化対象の拡張子。
### `generate.inputExts`
- タイプ: `string[]`
- デフォルト: `[".jpg", ".jpeg", ".png"]`
WebP・AVIF を生成する変換元フォーマット。
### `generate.outputExts`
- タイプ: `string[]`
- デフォルト: `[".webp", ".avif"]`
生成する変換先フォーマット。
### `generate.preserveExt`
- タイプ: `boolean`
- デフォルト: `false`
`true` にすると元の拡張子をファイル名に残します。
```
false: logo.png → logo.webp
true: logo.png → logo.png.webp
```
### `jpg` / `jpeg` / `png` / `gif` / `webp` / `avif`
各フォーマットの圧縮オプション。[sharp のオプション](https://sharp.pixelplumbing.com/api-output)をそのまま渡せます。
## 設定例
```ts
viteImageOptimizer({
generate: {
preserveExt: true,
},
jpg: { quality: 70, mozjpeg: true },
jpeg: { quality: 70, mozjpeg: true },
png: { quality: 70 },
webp: { quality: 75 },
avif: { quality: 70 },
});
```
## ライセンス
MIT