@gravityforms/gulp-tasks
Version:
Configurable Gulp tasks for use in Gravity Forms projects.
80 lines (74 loc) • 2.67 kB
JavaScript
const gulp = require( 'gulp' );
const getConfig = require( '../../config' );
const { config } = getConfig();
const browserSync = require( 'browser-sync' );
const webpack = require( 'webpack' );
const webpackStream = require( 'webpack-stream' );
const { merge } = require( 'webpack-merge' );
const args = require( '../utils/get-args' );
const webpackAdminDevConfig = require( '../webpack/admindev' );
const webpackAdminSettingsDevConfig = require( '../webpack/adminsettingsdev' );
const webpackAdminBlocksDevConfig = require( '../webpack/adminblocksdev' );
const webpackThemeDevConfig = require( '../webpack/themedev' );
const watchRules = require( '../webpack/rules/watch' );
const watchPlugins = require( '../webpack/plugins/watch' );
const watchConfig = {
watch: true,
};
webpackAdminDevConfig.module.rules = watchRules;
webpackThemeDevConfig.module.rules = watchRules;
webpackAdminDevConfig.plugins = watchPlugins.admin;
webpackThemeDevConfig.plugins = watchPlugins.theme;
function maybeReloadBrowserSync() {
const server = browserSync.get( config.browserSync.serverName );
if ( server.active ) {
server.reload();
}
}
module.exports = Object.assign( {}, {
main() {
// watch tasks from config
if ( config?.watchFiles ) {
config.watchFiles.forEach( ( entry ) => {
if ( entry.series ) {
gulp.watch( entry.files, gulp.series( entry.tasks ) );
return;
}
gulp.watch( entry.files, gulp.parallel( entry.tasks ) );
} );
}
},
watchAdminJS() {
if ( args.nojs ) {
return;
}
gulp.src( `${ config.paths.js_src }/admin/**/*.js` )
.pipe( webpackStream( merge( webpackAdminDevConfig, watchConfig ), webpack, function( err, stats ) {
console.log( stats.toString( { colors: true } ) );
maybeReloadBrowserSync();
} ) )
.pipe( gulp.dest( config.paths.js_dist ) );
},
// the next two legacy blocks of code need to be imported to the main bundle
watchAdminSettingsJS() {
gulp.src( `${ config.paths.js_src }/legacy/admin/settings/**/*.js` )
.pipe( webpackStream( merge( webpackAdminSettingsDevConfig, watchConfig ), webpack, function( err, stats ) {
console.log( stats.toString( { colors: true } ) );
maybeReloadBrowserSync();
} ) )
.pipe( gulp.dest( config.paths.js_dist ) );
},
watchThemeJS() {
if ( args.nojs ) {
return;
}
gulp.src( [
`${ config.paths.js_src }/theme/**/*.js`,
] )
.pipe( webpackStream( merge( webpackThemeDevConfig, watchConfig ), webpack, function( err, stats ) {
console.log( stats.toString( { colors: true } ) );
maybeReloadBrowserSync();
} ) )
.pipe( gulp.dest( config.paths.js_dist ) );
},
}, config?.tasks?.builtins?.watch || {} );