diff --git a/lib/index.js b/lib/index.js index b50b50e..f0864d0 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,15 +1,33 @@ 'use strict'; const path = require('path'); +const log = require('logalot'); +const binBuild = require('bin-build'); const BinWrapper = require('bin-wrapper'); const pkg = require('../package.json'); const url = `https://raw.githubusercontent.com/imagemin/pngquant-bin/v${pkg.version}/vendor/`; +const dest = path.resolve(__dirname, '../vendor'); -module.exports = new BinWrapper() - .src(`${url}macos/pngquant`, 'darwin') - .src(`${url}linux/x86/pngquant`, 'linux', 'x86') - .src(`${url}linux/x64/pngquant`, 'linux', 'x64') - .src(`${url}freebsd/x64/pngquant`, 'freebsd', 'x64') - .src(`${url}win/pngquant.exe`, 'win32') - .dest(path.resolve(__dirname, '../vendor')) - .use(process.platform === 'win32' ? 'pngquant.exe' : 'pngquant'); +module.exports = (() => { + const libpng = process.platform === 'darwin' ? 'libpng' : 'libpng-dev'; + + binBuild.file(path.resolve(__dirname, '../vendor/source/pngquant.tar.gz'), [ + 'rm ./INSTALL', + `./configure --prefix="${dest}"`, + `make install BINPREFIX="${dest}"` + ]).then(() => { + log.success('pngquant built successfully'); + }).catch(err => { + err.message = `pngquant failed to build, make sure that ${libpng} is installed`; + log.error(err.stack); + }); + + return new BinWrapper() + .src(`${url}macos/pngquant`, 'darwin') + .src(`${url}linux/x86/pngquant`, 'linux', 'x86') + .src(`${url}linux/x64/pngquant`, 'linux', 'x64') + .src(`${url}freebsd/x64/pngquant`, 'freebsd', 'x64') + .src(`${url}win/pngquant.exe`, 'win32') + .dest(dest) + .use(process.platform === 'win32' ? 'pngquant.exe' : 'pngquant'); +})(); diff --git a/lib/install.js b/lib/install.js index cf981de..0d8a642 100644 --- a/lib/install.js +++ b/lib/install.js @@ -1,6 +1,4 @@ 'use strict'; -const path = require('path'); -const binBuild = require('bin-build'); const log = require('logalot'); const bin = require('.'); @@ -9,21 +7,5 @@ bin.run(['--version']).then(() => { }).catch(err => { log.warn(err.message); log.warn('pngquant pre-build test failed'); - log.info('compiling from source'); - - const libpng = process.platform === 'darwin' ? 'libpng' : 'libpng-dev'; - - binBuild.file(path.resolve(__dirname, '../vendor/source/pngquant.tar.gz'), [ - 'rm ./INSTALL', - `./configure --prefix="${bin.dest()}"`, - `make install BINPREFIX="${bin.dest()}"` - ]).then(() => { - log.success('pngquant built successfully'); - }).catch(err => { - err.message = `pngquant failed to build, make sure that ${libpng} is installed`; - log.error(err.stack); - - // eslint-disable-next-line unicorn/no-process-exit - process.exit(1); - }); + process.exit(1); });