@gravityforms/gulp-tasks
Version:
Configurable Gulp tasks for use in Gravity Forms projects.
47 lines (42 loc) • 1.37 kB
JavaScript
/**
* External Dependencies
*/
import { createRequire } from 'node:module';
const require = createRequire( import.meta.url );
const { mergeWithCustomize, customizeArray } = require( 'webpack-merge' );
const { BundleAnalyzerPlugin } = require( 'webpack-bundle-analyzer' );
/**
* Internal Dependencies
*/
import getConfig from '../../config.js';
import devBase from './configs/dev-base.js';
import entry from './entry/theme.js';
import externals from './externals/theme/index.js';
import { scTheme } from './optimization/split-chunks.js';
const { config } = getConfig();
const isDevServer = process.env.WEBPACK_SERVE;
const optimization = isDevServer ? {} : { splitChunks: config?.webpack?.overrides?.optimization?.splitChunks?.scTheme || scTheme };
const pluginOverrides = Array.isArray( config.webpack?.overrides?.plugins?.theme )
? config.webpack.overrides.plugins.theme
: [];
export default mergeWithCustomize( {
customizeArray: customizeArray( {
optimization: 'append',
plugins: 'append',
} ),
} )( devBase, {
entry,
externals,
optimization,
output: {
path: config.paths.js_dist,
},
plugins: [
...pluginOverrides,
! isDevServer && new BundleAnalyzerPlugin( {
analyzerMode: 'static',
reportFilename: config?.paths?.reports?.replace( '%s', 'theme-bundle' ) || 'theme-bundle',
openAnalyzer: false,
} ),
].filter( Boolean ),
} );