Hooks for the angular-cli
Documentation for other versions could be found here:
Install the package:
npm install --save-dev ng-cli-hooks
Update your angular.json
file:
{
...
"projects": {
"app": {
...
"architect": {
"build": {
"builder": "ng-cli-hooks:browser",
"options": {
"optionsHook": "hooks/options.js",
"webpackHook": "hooks/webpack.js",
...
This Plugin contains hookable builders for
- browser
- dev-server
- extract-i18n
- server
Currently this plugin contains two different hooks: optionsHook
and webpackHook
.
This hook modifies the options for the builder at build-time.
Example: hooks/options.js
module.exports = function(options) {
options.assets = options.assets.map(asset => {
if(asset.input === 'src/assets') {
asset.input = `branding/${process.env.APP_BRANDING}/assets`;
}
return asset;
});
return options;
}
This hook can be used to modify the generated webpack-config of angular-cli or to replace it.
Example: hooks/webpack.js
const StringReplacePlugin = require('string-replace-webpack-plugin');
module.exports = function (generatedWebpackConfig, options) {
generatedWebpackConfig.module.rules.push({
test: /\.html$/,
loader: StringReplacePlugin.replace({
replacements: [
{
pattern: /Hello World/ig,
replacement: function () {
return 'Hello Angular'
}
}
]
})
});
return generatedWebpackConfig;
}
If hooks/webpack.js
exports a webpack-config-object, than the generated webpack-config will be replaced by your own.
The ionic-cli uses hardcoded the BrowserBuilder
from Angular for the cordova-build
. This made it impossible to use ng-cli-hooks
for the cordova-build. To force Ionic to use ng-cli-hooks
we can replace @ionic/ng-toolkit:cordova-build
with ng-cli-hooks:cordova-build
in the angular.json
file.
- Major version of ng-cli-hooks now equals the Angular version (use [email protected] to work with Angular 7.x.x)
- added
ng-cli-hooks:cordova-build
for Ionic 4 projects.