HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
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: /var/www/tana/frontend/gulpfile.js
// -----------------------------------------------------------------------------
// Dependencies
// -----------------------------------------------------------------------------

var gulp = require('gulp');
var del = require('del');
var sass = require('gulp-sass');
var browserSync = require('browser-sync').create();
var plumber = require('gulp-plumber');
var nunjucksRender = require('gulp-nunjucks-render');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var imagemin = require('gulp-imagemin');
var pngquant = require('imagemin-pngquant');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer');
var cssnano = require('cssnano');
var gulpIf = require('gulp-if');
var args = require('yargs').argv;
var isProd = args.production;

var ftp = require('vinyl-ftp');

var staticOutputFolder = './build';
var themeOutputFolder = './../wp-content/themes/tana';

// -----------------------------------------------------------------------------
// Configuration
// -----------------------------------------------------------------------------

var sassSource = './src/assets/style/**/*.scss';
var sassMain = './src/assets/style/style.scss';

var nunjucksTemplatesDev = './src/templates/**/*.+(html|njk)';
var nunjucksTemplates = './src/templates/*.+(html|njk)';

var sassOptions = { outputStyle: 'nested' };
// Autoprefixer options from Bootstrap 3 for consistency
var autoprefixerOptions = {
  browsers: [
    'Android 2.3',
    'Android >= 4',
    'Chrome >= 20',
    'Firefox >= 24',
    'Explorer >= 8',
    'iOS >= 6',
    'Opera >= 12',
    'Safari >= 6'
  ]
};

var postcssPlugins = [autoprefixer(autoprefixerOptions), cssnano];

// -----------------------------------------------------------------------------
// Clean task (delete build folders before starting the build)
// -----------------------------------------------------------------------------

gulp.task('clean', function () {
  return del(['./build', './styleguide', './../wp-content/themes/tana/assets'], { force: true }); // force delete since it cannot delete a folder outside of working directory (use cautiously)
});

// -----------------------------------------------------------------------------
// Sass compilation
// -----------------------------------------------------------------------------

gulp.task('sass', function () {
  return gulp
    .src(sassMain)
    .pipe(plumber())
    .pipe(sass(sassOptions).on('error', sass.logError))
    .pipe(postcss(postcssPlugins))
    .pipe(gulp.dest(staticOutputFolder + '/assets/style/'))
    .pipe(gulp.dest(themeOutputFolder + '/assets/style/'))
    .pipe(browserSync.stream());
});

// -----------------------------------------------------------------------------
// Javascript
// -----------------------------------------------------------------------------

gulp.task('scripts', function () {
  return (
    gulp
      .src([
        './src/assets/scripts/app.js'
      ])
      .pipe(plumber())
      .pipe(concat({ path: 'app.min.js' }))
      .pipe(gulpIf(isProd, uglify({ compress: { drop_debugger: true } })))
      .pipe(browserSync.reload({ stream: true }))
      .pipe(gulp.dest(staticOutputFolder + '/assets/scripts'))
      .pipe(gulp.dest(themeOutputFolder + '/assets/scripts'))
  );
});

gulp.task('scripts-vendor', function () {
  return (
    gulp
      .src('./src/assets/scripts/vendor/*.js')
      .pipe(plumber())
      .pipe(concat({ path: 'vendor.min.js' }))
      .pipe(gulpIf(isProd, uglify({ compress: { drop_debugger: true } })))
      .pipe(browserSync.reload({ stream: true }))
      .pipe(gulp.dest(staticOutputFolder + '/assets/scripts'))
      .pipe(gulp.dest(themeOutputFolder + '/assets/scripts'))
  );
});

// -----------------------------------------------------------------------------
// Templating
// -----------------------------------------------------------------------------

gulp.task('nunjucks', function () {
  // Gets .html and .nunjucks files in pages
  return (
    gulp
      .src(nunjucksTemplates)
      .pipe(plumber())
      // Renders template with nunjucks
      .pipe(
        nunjucksRender({
          path: ['./src/templates/']
        })
      )
      // output files in dist folder
      .pipe(gulp.dest(staticOutputFolder))
  );
});

// -----------------------------------------------------------------------------
// Imagemin
// -----------------------------------------------------------------------------

gulp.task('img', function () {
  return (
    gulp
      .src('./src/assets/images/**/*')
      .pipe(plumber())
      .pipe(
        imagemin({
          progressive: true,
          svgoPlugins: [{ removeViewBox: false }],
          use: [pngquant()]
        })
      )
      .pipe(gulp.dest(staticOutputFolder + '/assets/images'))
      .pipe(gulp.dest(themeOutputFolder + '/assets/images'))
  );
});

// -----------------------------------------------------------------------------
// Video
// -----------------------------------------------------------------------------

gulp.task('video', function () {
  return gulp
    .src([
      './src/assets/video/pilevilevideo.mp4',
      './src/assets/video/trgovina-video-optimized.mp4'
    ])
    .pipe(gulp.dest(staticOutputFolder + '/assets/video'))
    .pipe(gulp.dest(themeOutputFolder + '/assets/video'));
});

// -----------------------------------------------------------------------------
// Icons
// -----------------------------------------------------------------------------
gulp.task('icons', function () {
  return gulp
    .src('./src/assets/icons/icons.svg')
    .pipe(gulp.dest(staticOutputFolder + '/assets/icons'))
    .pipe(gulp.dest(themeOutputFolder + '/assets/icons'));
});

// -----------------------------------------------------------------------------
// Watchers
// -----------------------------------------------------------------------------

gulp.task('watch', function () {
  // Watch the sass input folder for changes,
  // and run `sass` task when something happens
  gulp.watch(sassSource, ['sass']).on('change', function (event) {
    console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
  });

  // Watch js files
  gulp.watch('./src/assets/**/*.js', ['scripts']).on('change', browserSync.reload);

  // Watch nunjuck templates and reload browser if change occurs
  gulp.watch(nunjucksTemplatesDev, ['nunjucks']).on('change', browserSync.reload);
});

// -----------------------------------------------------------------------------
// Static server
// -----------------------------------------------------------------------------

gulp.task('browser-sync', ['img'], function () {
  browserSync.init({
    server: {
      baseDir: staticOutputFolder
    }
  });
});

// -----------------------------------------------------------------------------
// Deploy to staging server
// -----------------------------------------------------------------------------

gulp.task('deploy', function () {
  var connection = ftp.create({
    host: 'ftp.filburg.co',
    user: 'tana@filburg.co',
    password: '&6@q@KD&7Q!x'
  });

  var globs = ['./build/**/*'];

  return gulp.src(globs, { base: './build/', buffer: false }).pipe(connection.dest('./'));
});

// -----------------------------------------------------------------------------
// Default task
// -----------------------------------------------------------------------------

gulp.task('development', ['watch', 'browser-sync']);

gulp.task('default', ['sass', 'nunjucks', 'img', 'video', 'icons', 'scripts', 'scripts-vendor', 'watch', 'browser-sync']);

gulp.task('build', ['sass', 'nunjucks', 'img', 'video', 'icons', 'scripts', 'scripts-vendor']);