gulpfile.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. 'use strict'
  2. global.$ = {
  3. gulp: require('gulp'),
  4. browserSync: require('browser-sync').create(),
  5. gp: require('gulp-load-plugins')()
  6. }
  7. function requireTask(taskName, path, options) {
  8. options = options || {};
  9. options.taskName = taskName;
  10. $.gulp.task(taskName, function(callback) {
  11. let task = require(path).call(this, options);
  12. return task(callback);
  13. });
  14. }
  15. requireTask('styles:dev', './tasks/styles-dev', {
  16. src: './src/assets/styles/main.styl'
  17. });
  18. requireTask('styles:prod', './tasks/styles-prod', {
  19. src: './src/assets/styles/main.styl'
  20. });
  21. requireTask('svg', './tasks/svg', {
  22. src: './src/assets/images/svg/**/*.svg',
  23. dist: './src/templates/blocks/sprite/'
  24. });
  25. requireTask('scripts:dev', './tasks/scripts-dev', {
  26. src: ['./src/assets/scripts/*.js', './src/templates/blocks/**/*.js']
  27. });
  28. requireTask('scripts:prod', './tasks/scripts-prod', {
  29. src: ['./src/assets/scripts/*.js', './src/templates/blocks/**/*.js']
  30. });
  31. requireTask('templates:dev', './tasks/templates-dev', {
  32. src: './src/templates/pages/*.pug'
  33. });
  34. requireTask('templates:prod', './tasks/templates-prod', {
  35. src: './src/templates/pages/*.pug'
  36. });
  37. requireTask('images', './tasks/images', {
  38. src: './src/assets/images/**/*.{png,jpg,svg}'
  39. });
  40. requireTask('uploads', './tasks/uploads', {
  41. src: './src/assets/uploads/**/*'
  42. });
  43. requireTask('fonts', './tasks/fonts', {
  44. src: './src/assets/fonts/**/*'
  45. });
  46. requireTask('generate-favicons', './tasks/generate-favicons', {
  47. src: './src/assets/images/favicon_src.png',
  48. dest: './src/assets/images/favicons'
  49. });
  50. requireTask('favicons', './tasks/favicons', {
  51. src: './src/assets/images/favicons/**/*'
  52. });
  53. requireTask('zip', './tasks/zip', {
  54. dist: './builds'
  55. });
  56. requireTask('clean', './tasks/clean', {
  57. dist: ['./dist', './builds']
  58. });
  59. requireTask('serve', './tasks/serve', {
  60. src: './dist'
  61. });
  62. requireTask('validate', './tasks/validate', {
  63. src: './dist/*.html'
  64. });
  65. $.gulp.task('watch', function() {
  66. $.gulp.watch(['./src/assets/styles/*.styl', './src/assets/styles/blocks/**/*.styl', './src/templates/blocks/**/*.styl'], $.gulp.series('styles:dev'));
  67. $.gulp.watch(['./src/assets/scripts/*.js', './src/templates/blocks/**/*.js'], $.gulp.series('scripts:dev'));
  68. $.gulp.watch('./src/templates/**/*.pug', $.gulp.series('templates:dev'));
  69. $.gulp.watch('./src/assets/images/svg/*.svg', $.gulp.series('svg', 'templates:dev'));
  70. $.gulp.watch('./src/assets/images/**/*.{png,jpg,svg}', $.gulp.series('images'));
  71. $.gulp.watch('./src/assets/uploads/**/*', $.gulp.series('uploads'));
  72. $.gulp.watch('./src/assets/images/favicons/*.*', $.gulp.series('favicons'));
  73. $.gulp.watch('./src/assets/fonts/**/*', $.gulp.series('fonts'));
  74. })
  75. $.gulp.task('build:dev', $.gulp.series(
  76. 'clean',
  77. $.gulp.parallel('styles:dev', 'scripts:dev', 'templates:dev', 'svg', 'images', 'uploads', 'favicons', 'fonts'))
  78. );
  79. $.gulp.task('dev', $.gulp.series(
  80. 'build:dev', $.gulp.parallel('watch', 'serve'))
  81. );
  82. $.gulp.task('build:prod', $.gulp.series(
  83. 'clean',
  84. $.gulp.parallel('styles:prod', 'scripts:prod', 'templates:prod', 'svg', 'images', 'uploads', 'favicons', 'fonts'))
  85. );
  86. $.gulp.task('prod', $.gulp.series(
  87. 'build:prod')
  88. );