Add Webpack Plugin for Angular Material
In OneCX v6, applications using Angular Material or Angular CDK must add a Webpack plugin. This change is required after upgrading to Angular 19.
|
This setup will be replaced by a OneCX-provided Webpack plugin in a future version. |
Install and Configure Webpack Plugin
-
Install
modify-source-webpack-pluginnpm install modify-source-webpack-plugin --save-dev -
Import
ModifySourcePluginandReplaceOperationfrommodify-source-webpack-plugin`in `webpack.config.js -
Create a
modifyMaterialPlugininstance with a rules array containing one rule object:-
The rule must define a
testfunction that returnstruewhenmodule.resourceexists and the resource path includes@angular/materialor@angular/cdk. -
The rule must include an
operationsarray with aReplaceOperationconfigured with:-
scope:
all -
match pattern:
document\.createElement\( -
replacement:
document.createElementFromMaterial({"this": this, "arguments": Array.from(arguments)},
-
-
-
Add the
modifyMaterialPlugininstance to the Webpackpluginsarray.
const { ModifySourcePlugin, ReplaceOperation } = require('modify-source-webpack-plugin')
const modifyMaterialPlugin = new ModifySourcePlugin({
rules: [
{
test: (module) => {
return (
module.resource &&
(module.resource.includes('@angular/material') ||
module.resource.includes('@angular/cdk'))
)
},
operations: [
new ReplaceOperation(
'all',
'document\\.createElement\\(',
'document.createElementFromMaterial({"this": this, "arguments": Array.from(arguments)},'
)
]
}
]
})
module.exports = {
...webpackConfig,
plugins: [...plugins, modifyMaterialPlugin]
}