🙌
minify-imagesについて
@itkyk/minify-images
どう使うの?なにができるの?
@itkyk/minify-imagesは、Node製の画像圧縮ライブラリです。
実際にイメージを圧縮している機構は、@sqoosh/libとsvgoになります。
@sqooshは、WebサイトからGUIでリアルタイムに画像圧縮の結果を見ながら、圧縮設定を決めることができるため、ユーザーフレンドリーでエンジニア以外とのコミュニケーションを円滑に進めることができます。
例えば、画像圧縮設定をデザイナーが指示したい場合、デザイナーはsqooshから、圧縮具合を決め、そこからパラメータを取得し、エンジニアに共有することで、実装側で再現することができます。
本ライブラリでは、jpg/png等の画像圧縮は@sqooshに依存しているため、このパラメータを共有することができます。
@sqooshではsvg画像の圧縮はできないですが、本ライブラリにはsvgoを内包することで一つのライブラリから全ての画像形式を一括圧縮することが可能です。
また、CLI/API両方に対応しているので、CLIでテスト運用することや、APIであなたの求めるフローに組み込むことや、複雑にカスタマイズすることも可能です。
Sqooshからの設定プロパティの取得方法
-
sqooshにアクセスし、画像をページにDrag & Drop
- 圧縮具合をパラメータを調整し、決定する。(本ライブラリのデフォルト値は、パラメータを何も調整していないものと同等になっています。)
- パラメータをコピーする。
- コピーされたコードを共有する。
例) npx @squoosh/cli --mozjpeg '{"quality":75}' - 例であれば、
--moxjpeg以下をCLIまたはAPIのパラメータにコピー// CLI $ minify -i ./input -o ./output --mozjpeg '{"quality":75}'// API import Minify, {ImageMinOptionInterface} from "@itkyk/minify-images"; const option: ImageMinOptionInterface = { inputPath: "./input/", outputPath: "./output", encodeOptions: { mozjpeg: { "quality":75 } } } new Minify(option);
APIで使う場合
import Minify, {ImageMinOptionInterface} from "@itkyk/minify-images";
const options: ImageMinOptionInterface = {
inputPath: "inputDir/to/path",
outputPath: "outputDir/to/Path",
encodeOptions: {
mozjpeg: {},// sqooshから取得できる、mozjpegのオプション群(deep merge)
oxipng: {}, // sqooshから取得できる、oxpngのオプション群(deep merge)
quant: {}, // sqooshから取得できる、quantのオプション群(deep merge)
svgo: [] // svgoのオプション群(上書き)
}
}
new Minify(options); // minify start
CLIで使う場合
// デフォルトの設定で起動
$ minify --input ./inputDir/to/path --output outputDir/to/path
// オプション
$ minify --input ./inputDir/to/path --output outputDir/to/path --mozjpeg '{}' --oxpng '{}' --quant '{}' --svgo '[]'
Options
API
| key | description | required? |
|---|---|---|
| inputPath | 圧縮する画像が格納されているディレクトリを指定します。 | required |
| outputPath | 圧縮したファイルを吐き出すディレクトリを指定します。 | required |
| encodeOptions | このオブジェクトの中に各拡張子の圧縮設定を記述します。 | |
| mozjpeg |
moxjpegの圧縮設定を指定できます。 |
|
| oxipng |
oxpngの圧縮設定を指定できます。 |
|
| quant |
quantの圧縮設定を指定できます。 |
|
| svgo |
svgoの圧縮設定を指定できます。 |
CLI
| key | description | required? |
|---|---|---|
| -i, --input | 圧縮する画像が格納されているディレクトリを指定します。 | required |
| -o, --output | 圧縮したファイルを吐き出すディレクトリを指定します。 | required |
| -m, --mozjpeg |
moxjpegの圧縮設定を指定できます。 |
|
| -ox, --oxipng |
oxpngの圧縮設定を指定できます。 |
|
| -q, --quant |
quantの圧縮設定を指定できます。 |
Features
今後は以下をアップデートしていきます。
- リサイズの指定ができるように。
-
jpg/png以外の拡張子の圧縮ができるように(sqooshが対応している拡張子の対応。webpなど) - svgoの設定をCLIからでもできるように。
Links
| npm | github |
|---|---|
![]() |

Discussion