vendor.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import config from '../config';
  2. import gulp from 'gulp';
  3. import notifier from 'node-notifier';
  4. import AssetsManager from 'assets-manager';
  5. import sass from 'gulp-sass';
  6. import postcss from 'gulp-postcss';
  7. import size from 'gulp-size';
  8. import minify from 'gulp-clean-css';
  9. import rename from 'gulp-rename';
  10. import gulpif from 'gulp-if';
  11. import notify from 'gulp-notify';
  12. import del from 'del';
  13. gulp.task('clean:vendor', (done) => {
  14. const manager = new AssetsManager('manifest.json', config.vendor);
  15. manager.cleanPackages().then(()=>{
  16. if (config.enable.notify) {
  17. notifier.notify({
  18. title: config.notify.title,
  19. message: 'Vendor clean task complete',
  20. });
  21. }
  22. done();
  23. });
  24. });
  25. gulp.task('copy:vendor', (done) => {
  26. // see https://github.com/amazingSurge/assets-manager
  27. const manager = new AssetsManager('manifest.json', config.vendor);
  28. manager.copyPackages().then(()=>{
  29. done();
  30. });
  31. });
  32. gulp.task('vendor:styles', (done) => {
  33. return gulp
  34. .src(`${config.vendor.source}/*/*.scss`)
  35. .pipe(
  36. sass({
  37. precision: 10, // https://github.com/sass/sass/issues/1122
  38. includePaths: config.styles.include,
  39. })
  40. )
  41. .pipe(postcss())
  42. .pipe(size({gzip: true, showFiles: true}))
  43. .pipe(gulp.dest(`${config.vendor.dest}`))
  44. .pipe(minify())
  45. .pipe(rename({
  46. extname: '.min.css'
  47. }))
  48. .pipe(size({gzip: true, showFiles: true}))
  49. .pipe(gulp.dest(`${config.vendor.dest}`))
  50. .pipe(
  51. gulpif(
  52. config.enable.notify,
  53. notify({
  54. title: config.notify.title,
  55. message: 'Vendor task complete',
  56. onLast: true,
  57. })
  58. )
  59. );
  60. });
  61. gulp.task(
  62. 'vendor',
  63. gulp.series('copy:vendor', 'vendor:styles', (done) => {
  64. if (config.enable.notify) {
  65. notifier.notify({
  66. title: config.notify.title,
  67. message: 'Vendor task complete',
  68. });
  69. }
  70. done();
  71. })
  72. );