Ювелирная настройка Webpack в Angular приложении
Angular CLI
- это ценный инструмент, который использует каждый разработчик Angular для инициализации, разработки, создания и поддержки своих приложений с легкостью. С выпуском Angular 8
был добавлен API Architect
который дает возможность легко встроиться в конфигурацию webpack
.
Настройка конфигурации webpack
Расширим конфигурацию webpack,
добавив несколько доработок:
1. плагин webpack-notifier
, который использует пакет node-notifier
для отображения уведомлений о состоянии сборки в системе для пользователя.
Создадим новое приложение Angular
:
npx @angular/cli new appName
Далее установим библиотеку angular-builders
npm i -D @angular-builders/custom-webpack
Изменим файл angular.json
, в частности опцию builder
в полях architect.build
и architect.serve
на следующее:
{ "architect": { "build": { "builder": "@angular-builders/custom-webpack:browser", "options": { "customWebpackConfig": { "path": "./webpack.config.js" } } }, "serve": { "builder": "@angular-builders/custom-webpack:dev-server", "options": { "customWebpackConfig": { "path": "./webpack.config.js" } } } } }
С этим изменением, когда мы запускаем команды ng serve
или ng build
, Angular
будет использовать наш пользовательский сборщик. Сборщик выполнит ту же сборку, что и стандартный, с дополнительными параметрами, указанными в предоставленной конфигурации файла webpack
.
Изучим содержимое файла webpack.config
:
const WebpackNotifierPlugin = require('webpack-notifier'); const path = require('path'); module.exports = { module : { rules: [ { test : /\.scss$/, loader : 'postcss-loader', options: { ident : 'postcss', plugins: () => [ require('postcss-short')(), ] } } ] }, plugins: [ new WebpackNotifierPlugin({ alwaysNotify: true, title : 'App Name', contentImage: path.join(__dirname, 'image.png') }), ] };
Достаточно создать объект конфигурации webpack с дополнительными настройками, которые требуются. В нашем случае используется API webpack
для добавления загрузчика postcss
, чтобы была возможность применить плагин плагин postcss-short и плагин WebpackNotifierPlugin
, о котором мы упоминали ранее.
Сборщик позаботится о слиянии дельты с существующей конфигурацией, предоставленной Angular.
Теперь мы можем использовать API
плагина postcss-short
, например, давайте добавим сокращенное свойство size
:
div { size: 300px; }
В итоге появилось уведомление и готовый CSS.
Это вольный перевод материала