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