images.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import gulp from 'gulp';
  2. import config from '../config';
  3. import gulpif from 'gulp-if';
  4. import notify from 'gulp-notify';
  5. import imagemin from 'gulp-imagemin';
  6. import pngquant from 'imagemin-pngquant';
  7. import size from 'gulp-size';
  8. import changed from 'gulp-changed';
  9. import plumber from 'gulp-plumber';
  10. import notifier from 'node-notifier';
  11. import del from 'del';
  12. // IMAGES
  13. // ------------------
  14. // compressing images (unless they already got compressed)
  15. gulp.task('images', () => {
  16. return gulp
  17. .src(`${config.images.source}/**/*.+(png|jpg|jpeg|gif|svg)`)
  18. .pipe(changed(`${config.images.build}`))
  19. .pipe(
  20. plumber({errorHandler: notify.onError('Error: <%= error.message %>')})
  21. )
  22. .pipe(
  23. imagemin({
  24. progressive: true,
  25. use: [pngquant()],
  26. })
  27. )
  28. .pipe(size({showFiles: true}))
  29. .pipe(plumber.stop())
  30. .pipe(gulp.dest(`${config.images.build}`))
  31. .pipe(
  32. gulpif(
  33. config.enable.notify,
  34. notify({
  35. title: config.notify.title,
  36. message: 'Images task complete',
  37. onLast: true,
  38. })
  39. )
  40. );
  41. });
  42. // Clean images files
  43. gulp.task('clean:images', (done) => {
  44. return del([`${config.images.build}/**/*`]).then(() => {
  45. if (config.enable.notify) {
  46. notifier.notify({
  47. title: config.notify.title,
  48. message: 'Clean images task complete',
  49. });
  50. }
  51. done();
  52. });
  53. });