Webpack is a module bundler primarily for JavaScript, but it can transform front-end assets like HTML, CSS, and images if the corresponding plugins are included. Webpack takes modules with dependencies and generates static assets representing those modules.
More information can be found in the official Webpack site
https://webpack.js.org/
These are the list of commands available:
The default build using Webpack.
npm run build --demo1
This command use to start the Webpack real-time watcher. This task watches the sass/js files and automatically recompile whenever the source files are changed.
npm run watch --demo1
Webpack use webpack-dev-server
to quickly develop an application. Use below command to start the Webpack in localhost.
npm run localhost --demo1
Parameter |
Type |
Description |
--rtl=true |
boolean |
Optional. Default is false . To generate RTL for all CSS files.
Example |
npm run build --rtl=true --demo1
|
|
--prod |
boolean |
Optional. Default is false . Set the Webpack to production mode and minify all assets.
Example |
npm run build --prod --demo1
|
|
--css |
boolean |
Compile only css files.
Example |
npm run build --css --demo1
|
|
--js |
boolean |
Compile only javascript files.
Example |
npm run build --js --demo1
|
|
The new plugins from npm
can be added into existing
plugins.js
file or in separate bundle.
[metronic]/theme/html/tools/webpack/plugins/plugins.js
To create a separate bundle, check on these existing samples in
[metronic]/theme/html/tools/webpack/plugins/custom/*
Get the new plugin package from yarn site;
https://yarnpkg.com/en/. Install the new plugin using yarn (refer to this guide
https://yarnpkg.com/en/docs/usage). This is the example command to add a new
npm
plugin.
After running this command, the new plugin name will be added into package.json
yarn add [package]
Use below sample code to include the new plugin. The Webpack will first look for the plugins in the
node_modules
folder.
require("[package]");
require("path/to/dist/package.js");
For some case, the included plugin that need to be initialized within your custom codes by pass it to the global
window
. Then can be used globally within your custom codes. For example as below;
window.Dropzone = require("dropzone");
This is to fix the browser to recognize the plugin when need to use it as new Dropzone()
To include CSS file from the plugin, use this;
require("path/to/dist/package.css");
Below is a file structure inside the default Metronic's Webpack config. The Metronic's Webpack config is located in
[metronic]/theme/html/tools/webpack/*
Path |
Description |
plugins | 3rd party vendor's plugins from node_modules . |
custom | This folder contains separate vendor's bundles. |
plugins.js | This is the global vendor includes which required for all pages. |
plugins.scss | This is the global vendor includes which required for all pages. |
scripts.js | The Metronic's core plugins and scripts. |