Advertisement
JPrakk

gulpfile cache problem

Dec 27th, 2022
782
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { src, dest, series, parallel, watch, lastRun } = require('gulp');
  2. const path = require('path');
  3. const pug = require('gulp-pug');
  4. const sass = require('gulp-sass')(require('sass'));
  5. const clean = require('gulp-clean');
  6. const browserSync = require('browser-sync').create();
  7. const autoprefixer = require('gulp-autoprefixer');
  8. const csso = require('gulp-csso');
  9. const sourcemaps = require('gulp-sourcemaps');
  10.  
  11. const cleanBuildDir = () => {
  12.   return src('build/', {
  13.     read: false,
  14.     allowEmpty: true
  15.   })
  16.     .pipe(clean())
  17. };
  18.  
  19. const pugHandler = () => {
  20.   return src(['src/pages/**/*.pug', '!src/pages/layout.pug'], {since: lastRun(pugHandler)})
  21.     .pipe(pug({
  22.       pretty: true,
  23.       basedir: path.join(__dirname, '/src')
  24.     }))
  25.     .pipe(dest('build/pages/'))
  26.     .pipe(browserSync.reload({stream: true}));
  27. };
  28.  
  29. const scssHandler = () => {
  30.   return src(['src/pages/**/*.scss'], {base: './src', since: lastRun(scssHandler)})
  31.     .pipe(sourcemaps.init())
  32.     .pipe(sass().on('error', sass.logError))
  33.     .pipe(sourcemaps.write())
  34.     .pipe(dest('build/'))
  35.     .pipe(browserSync.reload({stream: true}));
  36. };
  37.  
  38. const scssBuildHandler = () => {
  39.   return src(['src/pages/**/*.scss'], {base: './src'})
  40.     .pipe(sass().on('error', sass.logError))
  41.     .pipe(autoprefixer())
  42.     .pipe(csso())
  43.     .pipe(dest('build/'));
  44. };
  45.  
  46. const jsHandler = () => {
  47.   return src('src/pages/**/*.js')
  48.     .pipe(dest('build/pages/'))
  49.     .pipe(browserSync.reload({stream: true}));
  50. };
  51.  
  52. const imagesHandler = () => {
  53.   return src('src/images/**/*.{png,jpg,jpeg,webp,svg}', {
  54.     allowEmpty: true,
  55.     since: lastRun(imagesHandler)
  56.   })
  57.     .pipe(dest('build/images'))
  58.     .pipe(browserSync.reload({stream: true}));
  59. };
  60.  
  61. const fontsHandler = () => {
  62.   return src('src/fonts/*.{woff,woff2}')
  63.     .pipe(dest('build/fonts/'))
  64.     .pipe(browserSync.reload({stream: true}));
  65. };
  66.  
  67. const serve = () => {
  68.   browserSync.init({
  69.     server: 'build/',
  70.     open: false,
  71.     tunnel: 'livelib-testy'
  72.   });
  73.  
  74.   watch(
  75.     [
  76.       'src/pages/**/*.pug',
  77.       'src/components/**/*.pug'
  78.     ],
  79.     {
  80.       usePolling: true
  81.     },
  82.     pugHandler
  83.   );
  84.  
  85.   watch(
  86.     [
  87.       'src/pages/**/*.scss',
  88.       'src/components/**/*.scss',
  89.       'src/scss/*.scss'
  90.     ],
  91.     {
  92.       usePolling: true
  93.     },
  94.     scssHandler
  95.   );
  96.  
  97.   watch(
  98.     'src/**/*.js',
  99.     {
  100.       usePolling: true
  101.     },
  102.     jsHandler
  103.   );
  104.  
  105.   watch(
  106.     'src/images/*.{png,jpg,jpeg,webp,svg}',
  107.     {
  108.       usePolling: true
  109.     },
  110.     imagesHandler
  111.   );
  112.  
  113.   watch(
  114.     'src/fonts/*.{woff,woff2}',
  115.     {
  116.       usePolling: true
  117.     },
  118.     fontsHandler
  119.   );
  120. };
  121.  
  122. exports.build = series(
  123.   cleanBuildDir,
  124.   parallel(
  125.     pugHandler,
  126.     scssBuildHandler,
  127.     jsHandler,
  128.     imagesHandler,
  129.     fontsHandler
  130.   )
  131. );
  132.  
  133. exports.default = series(
  134.   cleanBuildDir,
  135.   parallel(
  136.     pugHandler,
  137.     scssHandler,
  138.     jsHandler,
  139.     imagesHandler,
  140.     fontsHandler
  141.   ),
  142.   serve
  143. );
  144.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement