File: /home/xrp54be6gdhh/public_html/cardefectattorney.com/wp-content/plugins/404-solution/Gulpfile.js
// Require our dependencies
var autoprefixer = require('autoprefixer');
var cheerio = require('gulp-cheerio');
var concat = require('gulp-concat');
var cssnano = require('gulp-cssnano');
var del = require('del');
var gulp = require('gulp');
var gutil = require('gulp-util');
var imagemin = require('gulp-imagemin');
var mqpacker = require('css-mqpacker');
var notify = require('gulp-notify');
var plumber = require('gulp-plumber');
var postcss = require('gulp-postcss');
var rename = require('gulp-rename');
var sass = require('gulp-sass');
var sassLint = require('gulp-sass-lint');
var sort = require('gulp-sort');
var sourcemaps = require('gulp-sourcemaps');
var spritesmith = require('gulp.spritesmith');
var uglify = require('gulp-uglify');
var wpPot = require('gulp-wp-pot');
// Set assets paths.
var paths = {
css: ['./*.css', '!*.min.css'],
icons: 'images/svg-icons/*.svg',
images: ['images/*', '!images/*.svg'],
php: ['./*.php', './**/*.php'],
sass: 'sass/**/*.scss',
concat_scripts: 'js/concat/*.js',
scripts: ['js/*.js', '!js/*.min.js', '!js/responsive-menu.js'],
sprites: 'images/sprites/*.png'
};
/**
* Handle errors and alert the user.
*/
function handleErrors () {
var args = Array.prototype.slice.call(arguments);
notify.onError({
title: 'Task Failed [<%= error.message %>',
message: 'See console.',
sound: 'Sosumi' // See: https://github.com/mikaelbr/node-notifier#all-notification-options-with-their-defaults
}).apply(this, args);
gutil.beep(); // Beep 'sosumi' again
// Prevent the 'watch' task from stopping
this.emit('end');
}
/**
* Delete style.css and style.min.css before we minify and optimize
*/
gulp.task('clean:styles', function() {
return del(['style.css', 'style.min.css'])
});
/**
* Compile Sass and run stylesheet through PostCSS.
*
* https://www.npmjs.com/package/gulp-sass
* https://www.npmjs.com/package/gulp-postcss
* https://www.npmjs.com/package/gulp-autoprefixer
* https://www.npmjs.com/package/css-mqpacker
*/
gulp.task('postcss', ['clean:styles'], function() {
return gulp.src('sass/*.scss', paths.css)
// Deal with errors.
.pipe(plumber({ errorHandler: handleErrors }))
// Wrap tasks in a sourcemap.
.pipe(sourcemaps.init())
// Compile Sass using LibSass.
.pipe(sass({
includePaths: [].concat(bourbon, neat),
errLogToConsole: true,
outputStyle: 'expanded' // Options: nested, expanded, compact, compressed
}))
// Parse with PostCSS plugins.
.pipe(postcss([
autoprefixer({
browsers: ['last 2 version']
}),
mqpacker({
sort: true
}),
]))
// Create sourcemap.
.pipe(sourcemaps.write())
// Create style.css.
.pipe(gulp.dest('./'))
.pipe(browserSync.stream());
});
/**
* Minify and optimize style.css.
*
* https://www.npmjs.com/package/gulp-cssnano
*/
gulp.task('cssnano', ['postcss'], function() {
return gulp.src('style.css')
.pipe(plumber({ errorHandler: handleErrors }))
.pipe(cssnano({
safe: true // Use safe optimizations
}))
.pipe(rename('style.min.css'))
.pipe(gulp.dest('./'))
.pipe(browserSync.stream());
});
/**
* Sass linting
*
* https://www.npmjs.com/package/sass-lint
*/
gulp.task('sass:lint', ['cssnano'], function() {
gulp.src([
'sass/**/*.scss',
'!sass/defaults/_sprites.scss'
])
.pipe(sassLint())
.pipe(sassLint.format())
.pipe(sassLint.failOnError());
});
/**
* Optimize images.
*
* https://www.npmjs.com/package/gulp-imagemin
*/
gulp.task('imagemin', function() {
return gulp.src(paths.images)
.pipe(plumber({ errorHandler: handleErrors }))
.pipe(imagemin({
optimizationLevel: 5,
progressive: true,
interlaced: true
}))
.pipe(gulp.dest('images'));
});
/**
* Delete scripts before we concat and minify
*/
gulp.task('clean:scripts', function() {
return del(['js/script.js', 'js/script.min.js']);
});
/**
* Concatenate javascripts after they're clobbered.
* https://www.npmjs.com/package/gulp-concat
*/
gulp.task('concat', ['clean:scripts'], function() {
return gulp.src(paths.concat_scripts)
.pipe(plumber({ errorHandler: handleErrors }))
.pipe(sourcemaps.init())
.pipe(concat('script.js'))
.pipe(sourcemaps.write())
.pipe(gulp.dest('js'))
});
/**
* Minify javascripts after they're concatenated.
* https://www.npmjs.com/package/gulp-uglify
*/
gulp.task('uglify', ['concat'], function() {
return gulp.src(paths.scripts)
.pipe(rename({suffix: '.min'}))
.pipe(uglify({
mangle: false
}))
.pipe(gulp.dest('js'));
});
/**
* Delete the theme's .pot before we create a new one
*/
gulp.task('clean:pot', function() {
return del(['languages/404-solution.pot']);
});
/**
* Scan the theme and create a POT file.
*
* https://www.npmjs.com/package/gulp-wp-pot
*/
gulp.task('wp-pot', ['clean:pot'], function() {
return gulp.src(paths.php)
.pipe(plumber({ errorHandler: handleErrors }))
.pipe(sort())
.pipe(wpPot({
domain: '404-solution',
destFile:'404-solution.pot',
package: '404-solution',
bugReport: 'https://github.com/aaron13100/404solution/issues/'
}))
.pipe(gulp.dest('languages/'));
});
/**
* Convert the readme.txt to a README.MD file.
*
* https://github.com/ahoereth/gulp-readme-to-markdown
*/
var readme = require('gulp-readme-to-markdown');
gulp.task('readme', function() {
gulp.src([ 'readme.txt' ])
.pipe(readme({
details: false,
screenshot_ext: ['jpg', 'jpg', 'png'],
extract: {
'changelog': 'CHANGELOG'
}
}))
.pipe(gulp.dest('.'));
});
/**
* Create indivdual tasks.
*/
gulp.task('i18n', ['wp-pot']);
gulp.task('scripts', ['uglify']);
gulp.task('styles', ['cssnano']);
gulp.task('sprites', ['imagemin']);
gulp.task('default', ['i18n','icons', 'styles', 'scripts', 'sprites']);