File: /home/www/web115/wordpress/wp-content/plugins/members/gulpfile.js
// Style related.
var styleSRC = './css/*.css'; // Path to .css files.
var styleDestination = './css/'; // Path to place the minified CSS files.
// JS related.
var jsSource = './js/*.js'; // Path to JS vendor folder.
var jsDestination = './js/'; // Path to place the minified JS files.
// Translation related.
var text_domain = 'members'; // Your textdomain here.
var translationFile = 'members.pot'; // Name of the transalation file.
var translationDestination = './lang'; // Where to save the translation files.
var packageName = 'members'; // Package name.
var bugReport = 'https://memberpress.com'; // Where can users report bugs.
var lastTranslator = 'Caseproof LLC <support@memberpress.com>'; // Last translator Email ID.
var team = 'Caseproof LLC <support@memberpress.com>'; // Team's Email ID.
// Files to watch
var stylesWatchFiles = './css/*.css'; // Path to all Sass partials.
var scriptsWatchFiles = './js/*.js'; // Path to all custom JS files.
var projectPHPWatchFiles = './**/*.php'; // Path to all PHP files.
/**
* Load Plugins.
*/
var gulp = require('gulp'); // Gulp of-course
// CSS related plugins.
var minifycss = require('gulp-uglifycss'); // Minifies CSS files.
var autoprefixer = require('gulp-autoprefixer'); // Autoprefixing magic.
// JS related plugins.
var uglify = require('gulp-uglify'); // Minifies JS files
// Utility related plugins.
var replace = require('gulp-replace'); // Search and replace text
var rename = require('gulp-rename'); // Renames files E.g. style.css -> style.min.css
var lineec = require('gulp-line-ending-corrector'); // Consistent Line Endings for non UNIX systems. Gulp Plugin for Line Ending Corrector (A utility that makes sure your files have consistent line endings)
var notify = require('gulp-notify'); // Sends message notification to you
var wpPot = require('gulp-wp-pot'); // For generating the .pot file.
var sort = require('gulp-sort'); // Recommended to prevent unnecessary changes in pot-file.
// Browsers you care about for autoprefixing.
// Browserlist https ://github.com/ai/browserslist
const AUTOPREFIXER_BROWSERS = [
'last 2 version'
];
/**
* Task: `styles`.
*
* Compiles Sass, Autoprefixes it and Minifies CSS.
*
* This task does the following:
* 1. Gets the source scss file
* 2. Compiles Sass to CSS
* 3. Autoprefixes it and generates style.css
* 4. Renames the CSS file with suffix .min.css
* 5. Minifies the CSS file and generates .min.css
*/
gulp.task('styles', function () {
gulp.src([
styleSRC,
'!css/*.min.css'
])
.pipe(autoprefixer(AUTOPREFIXER_BROWSERS))
.pipe(rename({ suffix: '.min' }))
.pipe(minifycss({
maxLineLen: 0
}))
.pipe(gulp.dest(styleDestination))
.pipe(notify({ message: 'TASK: "styles" Completed! 💯', onLast: true }))
});
/**
* Task: `scripts`.
*
* Concatenate and uglify JS files.
*
* This task does the following:
* 1. Gets the source folder for JS files
* 2. Concatenates all the files
* 3. Renames the concatenated JS file with suffix .min.js
* 4. Uglifes/Minifies the JS file and generates minified JS file
*/
gulp.task('scripts', function () {
gulp.src([
jsSource,
'!js/*.min.js'
])
.pipe(rename({
suffix: '.min'
}))
.pipe(uglify())
.pipe(lineec()) // Consistent Line Endings for non UNIX systems.
.pipe(gulp.dest(jsDestination))
.pipe(notify({ message: 'TASK: "scripts" Completed! 💯', onLast: true }));
});
/**
* WP POT Translation File Generator.
*
* * This task does the following:
* 1. Gets the source of all the PHP files
* 2. Search and replace the placeholder text for the text domain
* 3. Sort files in stream by path or any custom sort comparator
* 4. Applies wpPot with the variable set at the top of this file
* 5. Generate a .pot file of i18n that can be used for l10n to build .mo file
*/
gulp.task('pot', function () {
return gulp.src(projectPHPWatchFiles)
.pipe( replace( /(?<="|')(tdomain)(?="|')/g, text_domain ) )
.pipe(gulp.dest("./"))
.pipe(sort())
.pipe(wpPot({
domain: text_domain,
package: packageName,
bugReport: bugReport,
lastTranslator: lastTranslator,
team: team
}))
.pipe(gulp.dest(translationDestination + '/' + translationFile))
.pipe(notify({ message: 'TASK: "pot" Completed! 💯', onLast: true }))
});
/**
* Watch Tasks.
*
* Watches for file changes and runs specific tasks.
*/
gulp.task('default', ['styles', 'scripts'], function () {
gulp.watch([stylesWatchFiles, './css/*.css'], ['styles']);
gulp.watch(scriptsWatchFiles, ['scripts']);
});