gulp
imagemin
pngquant

gulp-imagemin で pngquant ENOENT というエラーの対処法

More than 1 year has passed since last update.


gulp-imagemin と imagemin-pngquant を入れても動かない

gulp環境を作り直したら画像軽量化のタスクでエラーが出てしまいました。

events.js:160

throw er; // Unhandled 'error' event
^
Error: spawn /Users/dada/.nodebrew/node/v6.10.0/lib/node_modules/imagemin-pngquant/node_modules/pngquant-bin/vendor/pngquant ENOENT
at exports._errnoException (util.js:1022:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:359:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)

情報を漁ったらstackoverflowでこんな情報がありました。


「pngquant ENOENT はそのディレクトリにpngquantが無いって意味だよHAHAHA」(意訳)



pngquant のバイナリを探す

node_modules/ の中を探してみると pngquant は存在していて、バイナリファイルもちゃんと入っていました。僕の場合は下記のディレクトリです。

/Users/dada/.nodebrew/node/v6.10.0/lib/node_modules/pngquant/node_modules/pngquant-bin/vendor/pngquant


シンボリックリンクを作って対処

それなら imagemin-pngquant が探そうとしている場所にシンボリック作ってやればいいじゃないかと試してみたら上手くいきました。

ディレクトリ名は各々の環境にあわせて書き換えてください。

$ cd /Users/dada/.nodebrew/node/v6.10.0/lib/node_modules/imagemin-pngquant/node_modules/pngquant-bin/vendor

$ ln -s /Users/dada/.nodebrew/node/v6.10.0/lib/node_modules/pngquant/node_modules/pngquant-bin/vendor/pngquant ./pngquant

これで問題無くコマンドが通るようになりました。


gulp-imagemin の使い方

gulp-imagemin の設定については過去にまとめました。

≫Gulpでpngquantを使ってPNGの減色&軽量化