18

I am trying to install the imagemin-pngquant module for node :

https://www.npmjs.org/package/imagemin-pngquant

However, when I run the command

npm install imagemin-pngquant --save-dev

I get the below error:

  warn : pngquant pre-build test failed
  info : compiling from source
 error : Error: pngquant failed to build, make sure that libpng-dev is installed
 at ChildProcess.exithandler (child_process.js:637:15)
 at ChildProcess.EventEmitter.emit (events.js:98:17)
 at maybeClose (child_process.js:735:16)
 at Socket.<anonymous> (child_process.js:948:11)
 at Socket.EventEmitter.emit (events.js:95:17)
 at Pipe.close (net.js:466:12)

How can I install the libpng-dev library that pngquant requires?

Rich
  • 5,316
  • 9
  • 35
  • 58

2 Answers2

9

I have had similar problem of missing libpng-dev when installing gulp-imagemin under Windows. I found out that libpng-dev does not exist for Windows, only for MacOS and Linux. Here is the error message I have got:

enter > node lib/install.js
  ‼ Request to https://raw.github.com/imagemin/pngquant-bin/v3.0.0/vendor/win/pngquant.exe failed
  ‼ pngquant pre-build test failed
  i compiling from source
  × Error: pngquant failed to build, make sure that libpng-dev is installed
at ChildProcess.exithandler (child_process.js:744:12)
at ChildProcess.emit (events.js:110:17)
at maybeClose (child_process.js:1008:16)
at Socket.<anonymous> (child_process.js:1176:11)
at Socket.emit (events.js:107:17)
at Pipe.close (net.js:476:12)

So, I have tried to install pngquant-bin with

npm install --save-dev pngquant-bin

but got more or less the same error message. Notice the version number 3.0.0. Then I tried to install pngquant (without -dev) like this:

npm install --save-dev pngquant --msvs_version=2013

and it successfully installed pngquant version 2.0.0. After that I could also install gulp-imagemin.

I am not sure though if the 2013 library version has played any role here.

Madrus
  • 476
  • 3
  • 11
  • Just wanted to add that using C++ runtime libraries on Windows sometimes is the only way to install nodejs components. One such component is e.g. browser-sync. Of course, you need to have those libraries installed on your machine. Fortunately, installing the free Visual Studio 2013 Community Edition is enough. – Madrus Apr 23 '15 at 15:15
  • 2
    I had to use '--msvs_version=2017' but using this flag worked for me. – emeraldjava Oct 04 '19 at 08:12
  • I tried with both 2015 and 2013, but none is worked. – Derek Jin Jul 29 '20 at 09:45
5

Use Windows Power Shell, as an Admin, and npm install --global --production windows-build-tools

If you had previous made any npm installation attempt - which you must certainly had, to be reading theses lines right now - you have to clean everything, and do a fresh dependency intsllation:
$ rm node_modules -R
$ rm package-lock.json
$ npm install

Good luck!

Pedro Ferreira
  • 449
  • 6
  • 12