UNPKG

webpack-notifier

Version:

webpack + node-notifier = build status system notifications

192 lines (133 loc) 5.72 kB
# webpack-notifier [![npm Version](https://img.shields.io/npm/v/webpack-notifier.svg)](https://www.npmjs.com/package/webpack-notifier) [![GitHub Workflow Status](https://github.com/Turbo87/webpack-notifier/workflows/CI/badge.svg)](https://github.com/Turbo87/webpack-notifier/actions?query=workflow:CI) [![Coverage Status](https://coveralls.io/repos/github/Turbo87/webpack-notifier/badge.svg)](https://coveralls.io/github/Turbo87/webpack-notifier?branch=master) [![Code Style](https://badgen.net/badge/code%20style/Airbnb/007ec6?icon=airbnb)](https://github.com/airbnb/javascript) [![npm](https://img.shields.io/npm/dm/webpack-notifier)](https://www.npmjs.com/package/webpack-notifier) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/webpack-notifier) This is a [webpack](http://webpack.github.io/) plugin that uses the [node-notifier](https://github.com/mikaelbr/node-notifier) package to display build status system notifications to the user. ![webpack-notifier screenshot](screenshot.png) > This is a fork of the [webpack-error-notification](https://github.com/vsolovyov/webpack-error-notification) plugin. It adds support for Windows and there is no need to manually install the `terminal-notifier` package on OS X anymore. The plugin will notify you about the first run (success/fail), all failed runs and the first successful run after recovering from a build failure. In other words: it will stay silent if everything is fine with your build. ## Installation Use `npm` to install this package: npm install --save-dev webpack-notifier Check the `node-notifier` [Requirements](https://github.com/mikaelbr/node-notifier#requirements) whether you need to install any additional tools for your OS. ## Usage In the `webpack.config.js` file: ```js var WebpackNotifierPlugin = require('webpack-notifier'); var config = module.exports = { // ... plugins: [ new WebpackNotifierPlugin(), ] } ``` ## Configuration ### All `node-notifier` options > **Deprecated since v1.17.** This way of passing options keeps working until > v2.0use [`notifyOptions`](#notifyoptions) instead. You can use any [node-notifier](https://www.npmjs.com/package/node-notifier) options (depending on your OS) Except for options generated by the plugin itself: * `title` - it can be not only a string, but also a function * `message` - generated based on the value of other options * `contentImage` - it can be an object with images for different statuses * `icon` - matches with `contentImage` ### notifyOptions > Since v1.17. The recommended way to pass [node-notifier](https://www.npmjs.com/package/node-notifier) options (depending on your OS) on every notification: ```js new WebpackNotifierPlugin({ notifyOptions: { appID: 'com.squirrel.your.app', // Windows: use your app id instead of the default 'SnoreToast' one }, }); ``` `notifyOptions` accepts any node-notifier option. The values for `title`, `message`, `contentImage` and `icon` are always generated by the plugin, so anything you set for them here is ignored — use the plugin-level [`title`](#title) and [`contentImage`](#content-image) options instead. ### notifier / notifierOptions > Since v1.17. By default the plugin notifies through the `node-notifier` notifier selected for your OS. Use `notifier` to pick another notifier and `notifierOptions` to configure its constructor. `notifierOptions` without `notifier` configure the constructor of the notifier selected for your OS: ```js var nodeNotifier = require('node-notifier'); new WebpackNotifierPlugin({ notifier: nodeNotifier.WindowsToaster, // or just 'WindowsToaster' notifierOptions: { withFallback: false, // do not fall back to balloon notifications }, }); ``` `notifier` accepts the name of one of the notifiers exported by [node-notifier](https://www.npmjs.com/package/node-notifier) (`NotificationCenter`, `WindowsToaster`, `WindowsBalloon`, `Growl`, `NotifySend`) or the constructor itself. `notifierOptions` are passed to the notifier constructor — see the `node-notifier` documentation for the options supported by each notifier (e.g. `withFallback`, `customPath`). ### Title Title shown in the notification. ```js new WebpackNotifierPlugin({title: 'Webpack'}); ``` ```js new WebpackNotifierPlugin({title: function (params) { return `Build status is ${params.status} with message ${params.message}`; }}); ``` ### Emojis in message text Show status emoji icon before the message. ```js new WebpackNotifierPlugin({emoji: true}); ``` ### Content Image Image shown in the notification. Can be a path string or object with paths. #### String path: ```js var path = require('path'); new WebpackNotifierPlugin({contentImage: path.join(__dirname, 'logo.png')}); ``` #### Object string path: ```js var path = require('path'); const statusesPaths = { success: path.join(__dirname, 'success.png'), warning: path.join(__dirname, 'warning.png'), error: path.join(__dirname, 'error.png') } new WebpackNotifierPlugin({contentImage: statusesPaths}); ``` ### Exclude Warnings If set to `true`, warnings will not cause a notification. ```js new WebpackNotifierPlugin({excludeWarnings: true}); ``` ### Always Notify Trigger a notification every time. Call it "noisy-mode". ```js new WebpackNotifierPlugin({alwaysNotify: true}); ``` ### Notify on error Trigger a notification only on error. ```js new WebpackNotifierPlugin({onlyOnError: true}); ``` ### Skip Notification on the First Build Do not notify on the first build. This allows you to receive notifications on subsequent incremental builds without being notified on the initial build. ```js new WebpackNotifierPlugin({skipFirstNotification: true}); ```