Assets
Any front-end file, non-PHP, is considered an asset in the framework; JavaScript, CSS, SASS, SCSS, LESS, fonts, images and views (templates) are examples of asset files.
Gulp
Gulp is included out-of-the-box in the framework to handle compilation of styles and scripts, and deployments. To install Gulp dependencies, run:
npm install
NodeJS is required prior to using Gulp.
Raw vs Compiled
Optimization and development are key factors empowered by the framework. Predefined Gulp tasks compile, minify, and concatenate raw assets for efficiency.
All CSS/JS/SASS files under [project]/assets/raw are subjected to compilation and/or concatenation. Files should be stored in the following subfolders:
[...]/assets/raw/css: CSS files are concatenated intoapp.cssand stored in[..]/assets/css. Subfolders (e.g.,admin) generate corresponding files likeadmin.css.[...]/assets/raw/js: JS files are concatenated intoapp.jsand stored in[..]/assets/js. Subfolders (e.g.,admin) generateadmin.js.[...]/assets/raw/sass: SASS/SCSS files are compiled into CSS and stored in[..]/assets/css.
To compile assets from the raw folder:
gulp dev
Or alias:
npm run dev
Watch
The framework provides watch tasks to auto-compile raw files on changes:
gulp watch: Watch any change in the raw folder.gulp watch-styles: Watch only style changes (CSS/SASS/SCSS).gulp watch-sass: Watch only SASS/SCSS changes.gulp watch-js: Watch only JS changes.
Or alias:
npm run watch
Auto-enqueue
By default, compiled files app.css and app.js are auto-enqueued into WordPress. Auto-enqueue settings are configurable in the configuration file:
return [
'autoenqueue' => [
'enabled' => true,
'assets' => [
[
'asset' => 'css/app.css',
'dep' => [],
'footer' => false,
],
[
'asset' => 'js/app.js',
'dep' => [],
'footer' => true,
],
],
],
];
'enabled': Enables or disables auto-enqueue.'assets': Array of assets to auto-enqueue, each with:'asset': Path to the asset (e.g.,css/app.css).'dep': Array of dependencies (e.g.,['jquery']).'footer': Boolean;trueloads in footer,falsein header.- Optional:
'id','version','enqueue'(iffalse, registers but does not enqueue),'is_admin'(for admin dashboard).
Example: Register without auto-enqueuing:
'enqueue' => false
Example: Enqueue admin asset:
'is_admin' => true
Example: Custom asset with dependencies:
[
'asset' => 'js/custom.js',
'dep' => ['jquery'],
'footer' => true,
]
Asset identifier in WordPress: lowercase filename (without .min), dash, and lowercase namespace (e.g., bootstrap-mynamespace). Used for dependency management.
Example with explicit ID and version:
[
'asset' => 'js/bootstrap.min.js',
'id' => 'bootstrap',
'dep' => ['jquery'],
'version' => '4.3.0',
'footer' => true,
]
Deployment
To compile assets for production, minify, remove development files, and prepare a ZIP:
gulp build
Or alias:
npm run build
For deployment without ZIP (e.g., for CI/CD), output to [project]/builds/deploy:
gulp deploy
Or alias:
npm run deploy
Deployment result: Assets in /assets/js and /assets/css are minified; unnecessary files and development vendor packages are excluded.
Usage
Use assets_url() or assets_path() to get the URL or path of an asset:
<img src="<?php echo assets_url('img/my-logo.png', __FILE__); ?>" />
$path = assets_path('img/my-logo.png', __FILE__);
Webpack
If webpack.config.js exists at the project root, WPMVC adds a webpack task and integrates it into the build process.
Add to package.json:
{
"scripts": {
"webpack": "webpack --hide-modules"
}
}
Install Webpack via npm:
npm install webpack --save
Webpack is not included as a dependency by default.
Assets in WPMVC are optimized for development and production, with seamless auto-enqueuing via configuration — ensuring clean, performant loading in WordPress without manual hook clutter in the Main class.