Update build scripts

This commit is contained in:
Robin Cornett
2023-03-26 18:07:53 -04:00
parent fc883ff066
commit a15d7d0b5d
19 changed files with 471 additions and 450 deletions
+135 -135
View File
@@ -1,135 +1,135 @@
/** /**
* The configuration file for gulp projects. * The configuration file for gulp projects.
* This file should not be edited--project specific variables are stored in variables.js * This file should not be edited--project specific variables are stored in variables.js
*/ */
'use strict'; 'use strict';
/** /**
* User defined variables * User defined variables
*/ */
var variables = require( './variables' ); var variables = require( './variables' );
/** /**
* Main source * Main source
* @type {string} * @type {string}
*/ */
var source = './'; var source = './';
/** /**
* Source for Sass files * Source for Sass files
* @type {string} * @type {string}
*/ */
var styleSource = source + 'sass/**/*.scss'; var styleSource = source + 'sass/**/*.scss';
/** /**
* CSS destination folder * CSS destination folder
* themes: '' * themes: ''
* plugins: 'includes/css' * plugins: 'includes/css'
* @type {string} * @type {string}
*/ */
var styleDestination = source + ( 'theme' === variables.type ? '' : 'includes/css' ); var styleDestination = source + ( 'theme' === variables.type ? '' : 'includes/css' );
/** /**
* Sass output style * Sass output style
* @type {string} * @type {string}
*/ */
var sassOutputStyle = '' !== variables.sassOutputStyle ? variables.sassOutputStyle : ( 'theme' === variables.type ? 'compact' : 'compressed' ); var sassOutputStyle = '' !== variables.sassOutputStyle ? variables.sassOutputStyle : ( 'theme' === variables.type ? 'compact' : 'compressed' );
/** /**
* JS destination folder * JS destination folder
* themes: 'js' * themes: 'js'
* plugins: 'includes/js' * plugins: 'includes/js'
* @type {string} * @type {string}
*/ */
var scriptDestination = 'theme' === variables.type ? 'js' : 'includes/js'; var scriptDestination = 'theme' === variables.type ? 'js' : 'includes/js';
/** /**
* Source for javascript files * Source for javascript files
* @type {[*]} * @type {[*]}
*/ */
var scriptSource = [ var scriptSource = [
source + scriptDestination + '/**/*.js', source + scriptDestination + '/**/*.js',
'!' + source + scriptDestination + '/**/*min.js' '!' + source + scriptDestination + '/**/*min.js'
]; ];
/** /**
* Source for Bower files * Source for Bower files
* @type {string} * @type {string}
*/ */
var dependencySource = 'node_modules'; var dependencySource = 'node_modules';
/** /**
* Source for Six/Ten Press files * Source for Six/Ten Press files
* @type {[*]} * @type {[*]}
*/ */
var SixTenSource = [ var SixTenSource = [
dependencySource + '/sixtenpress/includes/common/**.*', dependencySource + '/sixtenpress/includes/common/**.*',
dependencySource + '/sixtenpress/includes/common/**/*' dependencySource + '/sixtenpress/includes/common/**/*'
]; ];
/** /**
* Destination for Six/Ten Press common files * Destination for Six/Ten Press common files
* @type {string} * @type {string}
*/ */
var SixTenDestination = source + 'includes/common'; var SixTenDestination = source + 'includes/common';
/** /**
* Source for language files. * Source for language files.
* @type {string} * @type {string}
*/ */
var potSource = source + '**/*.php'; var potSource = source + '**/*.php';
/** /**
* Destination for language files. * Destination for language files.
* @type {string} * @type {string}
*/ */
var potDestination = source + variables.languageFolder + '/'; var potDestination = source + variables.languageFolder + '/';
/** /**
* The following should not be edited. * The following should not be edited.
* @type {{projectName: string, version: string, paths: {sassPath: string, dependencyDir: string, sixten: string}, output: {style: string, destination: string}, destination: string, buildInclude: [*]}} * @type {{projectName: string, version: string, paths: {sassPath: string, dependencyDir: string, sixten: string}, output: {style: string, destination: string}, destination: string, buildInclude: [*]}}
*/ */
module.exports = { module.exports = {
projectName: variables.projectSlug, projectName: variables.projectSlug,
projectTitle: variables.projectName, projectTitle: variables.projectName,
version: variables.version, version: variables.version,
root: source, root: source,
url: variables.url, url: variables.url,
paths: { paths: {
sassPath: styleSource, sassPath: styleSource,
jsPath: scriptSource, jsPath: scriptSource,
dependencyDir: dependencySource, dependencyDir: dependencySource,
sixtenBower: SixTenSource, sixtenBower: SixTenSource,
potSource: potSource potSource: potSource
}, },
output: { output: {
style: sassOutputStyle, style: sassOutputStyle,
styleDestination: styleDestination, styleDestination: styleDestination,
scriptDestination: scriptDestination, scriptDestination: scriptDestination,
sixtenDestination: SixTenDestination, sixtenDestination: SixTenDestination,
potDestination: potDestination potDestination: potDestination
}, },
packages: variables.packages, packages: variables.packages,
destination: variables.buildDestination, destination: variables.buildDestination,
buildInclude: [ buildInclude: [
'**', '**',
// exclude: // exclude:
'!node_modules/**/*', '!node_modules/**/*',
'!bower_components/**/*', '!bower_components/**/*',
'!sass/**/*', '!sass/**/*',
'!dist/**/*', '!dist/**/*',
'!node_modules', '!node_modules',
'!bower_components', '!bower_components',
'!sass', '!sass',
'!dist', '!dist',
'!gulpfile.js', '!gulpfile.js',
'!package.json', '!package.json',
'!package-lock.json', '!package-lock.json',
'!bower.json', '!bower.json',
'!gulp/**/*', '!gulp/**/*',
'!gulp', '!gulp',
'!yarn.lock' '!yarn.lock'
] ]
}; };
+17 -17
View File
@@ -1,17 +1,17 @@
/* /*
* Copyright (c) 2017 Robin Cornett * Copyright (c) 2017 Robin Cornett
*/ */
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'assets-shortcodes', function () { gulp.task( 'assets-shortcodes', function () {
var config = require( '../config' ), var config = require( '../config' ),
task_dir = config.paths.dependencyDir + '/sixtenpress-shortcodes/includes/**/*.*', task_dir = config.paths.dependencyDir + '/sixtenpress-shortcodes/includes/**/*.*',
directions = config.paths.dependencyDir + '/sixtenpress-shortcodes/sixtenpress-shortcodes.php'; directions = config.paths.dependencyDir + '/sixtenpress-shortcodes/sixtenpress-shortcodes.php';
gulp.src( directions ) gulp.src( directions )
.pipe( gulp.dest( config.root + 'includes/shortcodes' ) ); .pipe( gulp.dest( config.root + 'includes/shortcodes' ) );
gulp.src( task_dir ) gulp.src( task_dir )
.pipe( gulp.dest( config.root + 'includes/shortcodes/includes' ) ); .pipe( gulp.dest( config.root + 'includes/shortcodes/includes' ) );
} ); } );
+9 -9
View File
@@ -1,9 +1,9 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'assets-sixtenpress', function () { gulp.task( 'assets-sixtenpress', function () {
var config = require( '../config' ); var config = require( '../config' );
gulp.src( config.paths.sixtenBower ) gulp.src( config.paths.sixtenBower )
.pipe( gulp.dest( config.output.sixtenDestination ) ); .pipe( gulp.dest( config.output.sixtenDestination ) );
} ); } );
+9 -9
View File
@@ -1,9 +1,9 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'assets-slick', function () { gulp.task( 'assets-slick', function () {
var config = require( '../config' ); var config = require( '../config' );
return gulp.src( config.paths.dependencyDir + '/slick-carousel/slick/**.js' ) return gulp.src( config.paths.dependencyDir + '/slick-carousel/slick/**.js' )
.pipe( gulp.dest( config.output.scriptDestination ) ); .pipe( gulp.dest( config.output.scriptDestination ) );
} ); } );
+13 -13
View File
@@ -1,13 +1,13 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'assets-tasks', function () { gulp.task( 'assets-tasks', function () {
var config = require( '../config' ), var config = require( '../config' ),
task_dir = config.paths.dependencyDir + '/gulp-tasks/gulp/tasks/*.*', task_dir = config.paths.dependencyDir + '/gulp-tasks/gulp/tasks/*.*',
directions = config.paths.dependencyDir + '/gulp-tasks/gulp/config.js'; directions = config.paths.dependencyDir + '/gulp-tasks/gulp/config.js';
gulp.src( directions ) gulp.src( directions )
.pipe( gulp.dest( config.root + 'gulp' ) ); .pipe( gulp.dest( config.root + 'gulp' ) );
gulp.src( task_dir ) gulp.src( task_dir )
.pipe( gulp.dest( config.root + 'gulp/tasks' ) ); .pipe( gulp.dest( config.root + 'gulp/tasks' ) );
} ); } );
+9 -9
View File
@@ -1,9 +1,9 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'assets-tgmpa', function () { gulp.task( 'assets-tgmpa', function () {
var config = require( '../config' ); var config = require( '../config' );
return gulp.src( config.paths.dependencyDir + '/tgmpa/class-tgm-plugin-activation.php' ) return gulp.src( config.paths.dependencyDir + '/tgmpa/class-tgm-plugin-activation.php' )
.pipe( gulp.dest( config.root ) ); .pipe( gulp.dest( config.root ) );
} ); } );
+6 -6
View File
@@ -1,6 +1,6 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ), var gulp = require( 'gulp' ),
config = require( '../config' ); config = require( '../config' );
gulp.task( 'assets', config.packages ); gulp.task( 'assets', config.packages );
+17 -17
View File
@@ -1,17 +1,17 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'browserSync', function () { gulp.task( 'browserSync', function () {
var browserSync = require( 'browser-sync' ).create(), var browserSync = require( 'browser-sync' ).create(),
config = require( '../config' ), config = require( '../config' ),
files = [ files = [
config.output.styleDestination + '**/*.css', config.output.styleDestination + '**/*.css',
config.output.scriptDestination + '**/*.js' config.output.scriptDestination + '**/*.js'
]; ];
browserSync.init( files, { browserSync.init( files, {
proxy: config.url, proxy: config.url,
injectChanges: true injectChanges: true
} ) } )
} ); } );
+10 -10
View File
@@ -1,10 +1,10 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'build', [ gulp.task( 'build', [
'sass', 'sass',
'js', 'js',
'translate', 'translate',
'zip' 'zip'
] ); ] );
+9 -9
View File
@@ -1,9 +1,9 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'clean', function () { gulp.task( 'clean', function () {
var del = require( 'del' ), var del = require( 'del' ),
config = require( '../config' ); config = require( '../config' );
return del( [ config.destination ] ); return del( [ config.destination ] );
} ); } );
+5 -5
View File
@@ -1,5 +1,5 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'default', ['js', 'sass', 'translate', 'watch'] ); gulp.task( 'default', ['js', 'sass', 'translate', 'watch'] );
+17 -16
View File
@@ -1,16 +1,17 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'js', function () { gulp.task( 'js', () => {
var uglify = require( 'gulp-uglify-es' ).default, var uglify = require( 'gulp-uglify-es' ).default,
rename = require( 'gulp-rename' ), rename = require( 'gulp-rename' ),
config = require( '../config' ); config = require( '../config' );
gulp.src( config.paths.jsPath )
.pipe( uglify() ) return gulp.src( config.paths.jsPath )
.pipe( rename( { .pipe( uglify() )
extname: '.min.js' .pipe( rename( {
} ) ) extname: '.min.js'
.pipe( gulp.dest( config.output.scriptDestination ) ); } ) )
} ); .pipe( gulp.dest( config.output.scriptDestination ) );
} );
+43 -41
View File
@@ -1,41 +1,43 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'sass', function () { gulp.task( 'sass', () => {
var autoprefixer = require( 'autoprefixer' ), var autoprefixer = require( 'autoprefixer' ),
postcss = require( 'gulp-postcss' ), postcss = require( 'gulp-postcss' ),
sass = require( 'gulp-sass' ), sass = require( 'gulp-sass' )( require( 'sass' ) ),
notify = require( 'gulp-notify' ), sassunicode = require( 'gulp-sass-unicode' ),
atImport = require( 'postcss-import' ), notify = require( 'gulp-notify' ),
mqpacker = require( 'css-mqpacker' ), atImport = require( 'postcss-import' ),
config = require( '../config' ), mqpacker = require( 'css-mqpacker' ),
perfectionist = require( 'perfectionist' ), config = require( '../config' ),
browserSync = require( 'browser-sync' ), perfectionist = require( 'perfectionist' ),
processors = [ browserSync = require( 'browser-sync' ),
atImport, processors = [
autoprefixer( { atImport,
cascade: false, autoprefixer( {
remove: false cascade: false,
} ), remove: false
mqpacker( {sort: true} ), } ),
perfectionist( { mqpacker( { sort: true } ),
cascade: true, perfectionist( {
format: config.output.style, cascade: true,
indentSize: 4, format: config.output.style,
maxAtRuleLength: 80, indentSize: 4,
maxSelectorLength: 80, maxAtRuleLength: 80,
maxValueLength: 80, maxSelectorLength: 80,
sourcemap: true maxValueLength: 80,
} ) sourcemap: true
]; } )
gulp.src( config.paths.sassPath ) ];
.pipe( sass( {outputStyle: config.output.style} ).on( 'error', sass.logError ) ) return gulp.src( config.paths.sassPath )
.pipe( postcss( processors ) ) .pipe( sass( { outputStyle: config.output.style } ).on( 'error', sass.logError ) )
.pipe( gulp.dest( config.output.styleDestination ) ) .pipe( sassunicode() )
.pipe( browserSync.reload( { .pipe( postcss( processors ) )
stream: true .pipe( gulp.dest( config.output.styleDestination ) )
} ) ) .pipe( browserSync.reload( {
.pipe( notify( {message: 'you sassed the shit out of that.', onLast: true} ) ); stream: true
} ); } ) )
.pipe( notify( { message: 'you sassed the shit out of that.', onLast: true } ) );
} );
+18 -18
View File
@@ -1,18 +1,18 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'translate', function () { gulp.task( 'translate', () => {
var pot = require( 'gulp-wp-pot' ), var pot = require( 'gulp-wp-pot' ),
config = require( '../config' ); config = require( '../config' );
gulp.src( [config.paths.potSource] ) return gulp.src( [ config.paths.potSource ] )
.pipe( pot( { .pipe( pot( {
domain: config.projectName, domain: config.projectName,
package: config.projectTitle, package: config.projectTitle,
headers: false headers: false
} ) ) } ) )
.pipe( gulp.dest( config.output.potDestination + config.projectName + '.pot' ) ); .pipe( gulp.dest( config.output.potDestination + config.projectName + '.pot' ) );
} ); } );
+9 -9
View File
@@ -1,9 +1,9 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'watch', ['sass','browserSync'], function () { gulp.task( 'watch', ['sass','browserSync'], function () {
var config = require( '../config' ); var config = require( '../config' );
gulp.watch( config.paths.jsPath, ['js'] ); gulp.watch( config.paths.jsPath, ['js'] );
gulp.watch( config.paths.sassPath, ['sass'] ); gulp.watch( config.paths.sassPath, ['sass'] );
} ); } );
+31 -31
View File
@@ -1,31 +1,31 @@
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
gulp.task( 'zip' , function () { gulp.task( 'zip', () => {
var chmod = require( 'gulp-chmod' ), var chmod = require( 'gulp-chmod' ),
zip = require( 'gulp-zip' ), zip = require( 'gulp-zip' ),
config = require( '../config' ); config = require( '../config' );
return gulp.src( config.buildInclude, { base: '../' } ) return gulp.src( config.buildInclude, { base: '../' } )
.pipe( chmod( { .pipe( chmod( {
owner: { owner: {
read: true, read: true,
write: true, write: true,
execute: true execute: true
}, },
group: { group: {
read: true, read: true,
write: false, write: false,
execute: true execute: true
}, },
others: { others: {
read: true, read: true,
write: false, write: false,
execute: true execute: true
} }
}, true ) ) }, true ) )
.pipe( zip( config.projectName + '.' + config.version + '.zip' ) ) .pipe( zip( config.projectName + '.' + config.version + '.zip' ) )
.pipe( gulp.dest( config.destination ) ); .pipe( gulp.dest( config.destination ) );
} ); } );
+67 -67
View File
@@ -1,67 +1,67 @@
/** /**
* Use this file to define unique project details. * Use this file to define unique project details.
*/ */
'use strict'; 'use strict';
var project = require( '../package.json' ); var project = require( '../package.json' );
module.exports = { module.exports = {
/** /**
* The project slug (folder) * The project slug (folder)
*/ */
projectSlug: project.name, projectSlug: project.name,
/** /**
* The project's proper name * The project's proper name
*/ */
projectName: project.description, projectName: project.description,
/** /**
* Current project version * Current project version
*/ */
version: project.version, version: project.version,
/** /**
* Type of project (plugin/theme) * Type of project (plugin/theme)
*/ */
type: 'plugin', type: 'plugin',
/** /**
* Preferred languages folder * Preferred languages folder
*/ */
languageFolder: 'languages', languageFolder: 'languages',
/** /**
* Local Development URL (for BrowserSync) * Local Development URL (for BrowserSync)
*/ */
url: 'local.wordpress-trunk.test', url: 'https://local.five.test',
/** /**
* If blank, will be compact for themes, compressed for plugins. * If blank, will be compact for themes, compressed for plugins.
* Define this manually to override (expanded, compact, compressed, nested) * Define this manually to override (expanded, compact, compressed, nested)
*/ */
sassOutputStyle: '', sassOutputStyle: '',
/** /**
* Array of assets/packages for importing into project. * Array of assets/packages for importing into project.
* Current packages available: 'assets-shortcodes', * Current packages available: 'assets-shortcodes',
* 'assets-sixtenpress', * 'assets-sixtenpress',
* 'assets-slick', * 'assets-slick',
* 'assets-tasks', * 'assets-tasks',
* 'assets-tgmpa' * 'assets-tgmpa'
*/ */
packages: [ packages: [
// 'assets-shortcodes', // 'assets-shortcodes',
// 'assets-sixtenpress', // 'assets-sixtenpress',
// 'assets-slick', // 'assets-slick',
// 'assets-tasks', // 'assets-tasks',
// 'assets-tgmpa' // 'assets-tgmpa'
], ],
/** /**
* Destination folder for project zip archives. * Destination folder for project zip archives.
*/ */
buildDestination: '../../build' buildDestination: '../../build'
}; };
+19 -10
View File
@@ -1,10 +1,19 @@
/** /**
* gulpfile.js * gulpfile.js
*/ */
'use strict'; 'use strict';
var gulp = require( 'gulp' ); var gulp = require( 'gulp' );
var requireDir = require( 'require-dir' );
function getTask ( task ) {
// Require all tasks in gulp/tasks, including subfolders var taskDir = './gulp/tasks/' + task;
requireDir( './gulp/tasks', { recurse: true } );
return require( taskDir );
}
var tasks = [ 'sass', 'js', 'translate', 'zip' ];
for ( var index in tasks ) {
getTask( tasks[ index ] );
}
gulp.task( 'build', gulp.series( [ 'sass', 'js', 'translate', 'zip' ] ) );
+28 -19
View File
@@ -3,30 +3,39 @@
"description": "Display Featured Image for Genesis", "description": "Display Featured Image for Genesis",
"version": "3.2.2", "version": "3.2.2",
"private": true, "private": true,
"license": "GPL-2.0", "license": "GPL-2.0+",
"devDependencies": { "devDependencies": {
"autoprefixer": "9.7.0", "autoprefixer": "10.4.13",
"browser-sync": "2.26.7", "browser-sync": "2.27.11",
"css-mqpacker": "7.0.0", "css-mqpacker": "7.0.0",
"del": "^5.1.0", "del": "7.0.0",
"gulp": "^3.9.1", "gulp": "^4.0.2",
"gulp-chmod": "^3.0.0", "gulp-chmod": "3.0.0",
"gulp-notify": "^3.2.0", "gulp-notify": "4.0.0",
"gulp-postcss": "^8.0.0", "gulp-postcss": "9.0.1",
"gulp-rename": "^1.4.0", "gulp-rename": "2.0.0",
"gulp-sass": "^4.0.1", "gulp-sass": "5.1.0",
"gulp-uglify": "3.0.2", "gulp-uglify": "3.0.2",
"gulp-uglify-es": "^2.0.0", "gulp-uglify-es": "3.0.0",
"gulp-wp-pot": "^2.3.5", "gulp-wp-pot": "^2.3.2",
"gulp-zip": "^5.0.1", "gulp-zip": "5.1.0",
"perfectionist": "^2.4.0", "perfectionist": "^2.4.0",
"postcss-import": "12.0.1", "postcss": "^8.4.4",
"require-dir": "1.2.0" "postcss-import": "15.1.0",
"sass": "^1.41.1"
},
"dependencies": {
"@wordpress/browserslist-config": "5.7.0",
"glob-parent": ">=5.1.2",
"gulp-sass-unicode": "^1.0.5",
"gulp-svg-sprites": "^4.1.2",
"normalize.css": "8.0.1",
"trim-newlines": ">=3.0.1",
"set-value": ">=4.0.1",
"axios": ">=0.24.0",
"nth-check": ">=2.0.1"
}, },
"browserslist": [ "browserslist": [
"extends @wordpress/browserslist-config" "extends @wordpress/browserslist-config"
], ]
"dependencies": {
"@wordpress/browserslist-config": "^2.6.0"
}
} }