imageMin.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const imagemin = require("imagemin");
  2. const imageminSvgo = require("imagemin-svgo");
  3. const imageminJpegtran = require("imagemin-jpegtran");
  4. const imageminPngquant = require("imagemin-pngquant");
  5. const mkdirp = require("mkdirp");
  6. module.exports = function(config, item) {
  7. return new Promise(function(resolve, reject) {
  8. const destination = `${config.outputDir}/${item.outputDir}`;
  9. mkdirp(destination, err => {
  10. if (err) {
  11. reject({
  12. message: `could not create directory: ${destination}`,
  13. ...err
  14. });
  15. }
  16. imagemin([item.path], {
  17. destination,
  18. plugins: [
  19. imageminSvgo({
  20. plugins: [{ removeViewBox: false }]
  21. }),
  22. imageminJpegtran(),
  23. imageminPngquant({
  24. quality: [0.6, 0.8]
  25. })
  26. ]
  27. })
  28. .then(result => {
  29. const newItem = {
  30. ...item,
  31. path: item.outputPath
  32. };
  33. resolve(newItem);
  34. })
  35. .catch(e => {
  36. reject(e);
  37. });
  38. });
  39. });
  40. };