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の減色&軽量化