HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/thread-self/root/var/www/innodrive/gulpfile.babel.js
import gulp from 'gulp';
// import gulp from 'gulp4';
import sass from 'gulp-sass';
import sourcemaps from 'gulp-sourcemaps';
import cssnano from 'gulp-cssnano';
import autoprefixer from 'gulp-autoprefixer';
import imagemin from 'gulp-imagemin';
import webp from 'gulp-webp';
import svgSprite from 'gulp-svg-sprite';
import webpack from 'webpack';
import webpackStream from 'webpack-stream';
import pug from 'gulp-pug';
import stripDebug from 'gulp-strip-debug';
import gulpIf from 'gulp-if';
import plumber from 'gulp-plumber';
import changed from 'gulp-changed';
import notify from 'gulp-notify';
import del from 'del';
import browserSync from 'browser-sync';
// import nodemon from 'gulp-nodemon';
import combineS from 'stream-combiner2';
import webpackConfig from './webpack.config.js';

const bs = browserSync.create();
const combine = combineS.obj;
const isDevelopment = process.env.NODE_ENV !== 'production';
const buildFolder = 'public/wp-content/themes/innodrive';
const imagesDest = `${buildFolder}/img`;
const imagesQuery = 'src/assets/img/**/*.{jpg,png,svg}';
const imagesWebpQuery = 'src/assets/img/**/*.{jpg,png}';
const assetsQuery = ['src/assets/**', '!src/assets/img'];

const plumberMessage = (title) => ({
  errorHandler: notify.onError((err) => ({
    title,
    message: err.message,
  })),
});

const imageOptimPlugins = [
  imagemin.optipng({
    optimizationLevel: 3
  }),
  imagemin.jpegtran({
    progressive: true
  }),
  imagemin.svgo(),
];

const createWebpImages = () =>
  gulp
    .src(imagesWebpQuery)
    .pipe(plumber(plumberMessage('createWebpImages')))
    .pipe(webp({
      quality: 90
    }))
    .pipe(gulp.dest(imagesDest));

const copyImages = () =>
  gulp
    .src(imagesQuery)
    .pipe(plumber(plumberMessage('copyImages')))
    .pipe(changed(imagesDest))
    .pipe(imagemin(imageOptimPlugins))
    .pipe(gulp.dest(imagesDest));

const createSprite = () =>
  gulp
    .src('src/assets/icons/*.svg')
    .pipe(plumber(plumberMessage('writing sprite')))
    .pipe(svgSprite({
      dest: `${buildFolder}/sprite/`,
      mode: {
        symbol: {
          dest: './',
          inline: true,
          sprite: 'sprite.svg.php'
        }
      }
    }))
    .pipe(gulp.dest(`${buildFolder}/sprite/`));

const compileJS = () =>
  gulp
    .src('src/js/index.js')
    .pipe(plumber(plumberMessage('compileJS')))
    .pipe(webpackStream(webpackConfig, webpack))
    .pipe(gulpIf(!isDevelopment, combine(stripDebug())))
    .pipe(gulp.dest(`${buildFolder}/js/`));

const compileStyles = () =>
  gulp
    .src('src/styles/common.scss')
    .pipe(plumber(plumberMessage('compileStyles')))
    .pipe(gulpIf(isDevelopment, sourcemaps.init()))
    .pipe(
      sass({
        includePaths: [
          'tmp/styles',
          'node_modules/normalize-scss',
          'node_modules/choices.js',
          'node_modules/swiper',
        ],
      }),
    )
    .pipe(gulpIf(isDevelopment, sourcemaps.write()))
    .pipe(gulpIf(!isDevelopment, combine(autoprefixer({
      browsers: ['last 4 versions']
    }), cssnano())))
    .pipe(gulp.dest(`${buildFolder}/styles/`));

const copyAssets = () =>
  gulp
    .src(assetsQuery)
    .pipe(plumber(plumberMessage('copyAssets')))
    .pipe(changed(buildFolder))
    .pipe(gulp.dest(buildFolder));

const watch = (done) => {
  gulp.watch(['src/styles/**/*.sass', 'src/styles/**/*.scss', 'tmp/styles/sprite.scss'], compileStyles);
  gulp.watch('src/js/**/*.{js,json}', compileJS);
  gulp.watch(assetsQuery, copyAssets);
  gulp.watch('src/assets/icons/*.svg', createSprite);
  done();
};

const syncBrowser = (done) => {
  bs.init(null, {
    server: {
      baseDir: `./${buildFolder}`,
    },
    open: false,
    notify: false,
  });
  bs.watch(`${buildFolder}/**/*.*`, {
    ignored: '*.map'
  }).on('change', bs.reload);
  done();
};

const buildQueue = [
  compileStyles,
  compileJS,
  createWebpImages,
  copyImages,
  copyAssets,
  createSprite
];

const shortBuildQueue = [
  compileStyles,
  compileJS,
  createWebpImages,
  copyImages,
  copyAssets,
  createSprite
];

gulp.task('fullbuild', gulp.series(...buildQueue));
gulp.task('build', gulp.series(...shortBuildQueue));
gulp.task('dev', gulp.series('build', gulp.parallel(watch, syncBrowser)));