1.0.1 โ€ข Published 2 months ago

@svoirin/webpack-mac-notifier v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

webpack-mac-notifier

A lightweight Webpack plugin for macOS that shows build status notifications using terminal-notifier.


๐Ÿ“ฆ Installation

First, install the plugin:

npm install --save-dev @svoirin/webpack-mac-notifier
# or
pnpm add -D @svoirin/webpack-mac-notifier

Then make sure terminal-notifier is installed (required for macOS notifications):

brew install terminal-notifier

๐Ÿ›  Usage

Edit your webpack.config.js (or .ts) to include the plugin:

For CommonJS (webpack.config.js)

// webpack.config.js (CommonJS)
const MacNotifierPlugin = require('@svoirin/webpack-mac-notifier').default;

module.exports = {
  mode: 'development',
  plugins: [
    new MacNotifierPlugin({
      title: 'My Project',
      successMessage: 'โœ… Build successful!',
      warningMessage: 'โš ๏ธ Build completed with warnings.',
      errorMessage: 'โŒ Build failed!',
      sound: 'Ping', // macOS sounds: Basso, Frog, Submarine, etc.

For ESM (webpack.config.mjs or .js with type: "module")

// webpack.config.js (ESM)
import { MacNotifierPlugin } from '@svoirin/webpack-mac-notifier';

export default {
  mode: 'development',
  plugins: [
    new MacNotifierPlugin({
      title: 'My Project',
      successMessage: 'โœ… Build successful!',
      warningMessage: 'โš ๏ธ Build completed with warnings.',
      errorMessage: 'โŒ Build failed!',
      sound: 'Ping', // macOS sounds: Basso, Frog, Submarine, etc.
      debounceTime: 2000 // Time in ms to prevent duplicate notifications
    })
  ]
};

โœ… Features

  • Shows a native macOS notification after each build
  • Indicates success, warnings, or errors
  • Customizable title, message, and sound
  • Runs only on macOS (process.platform === 'darwin')
  • Smart debouncing to prevent duplicate notifications during hot reloads

๐Ÿ”ง Options

OptionTypeDefaultDescription
titlestring'Webpack Build'Notification title
successMessagestring'Build completed successfully!'Message shown on success
errorMessagestring'Build failed. Check console for errors.'Message shown on error
warningMessagestring'Build completed with warnings.'Message shown if there are warnings
soundstring'Glass'macOS system sound to play with the message
debounceTimenumber2000Time in milliseconds to wait before showing another notification (prevents duplicates during hot reloads)

๐Ÿ“˜ Requirements

  • macOS
  • terminal-notifier installed via Homebrew
  • Webpack v4 or v5

๐Ÿงช Local Development

Clone the repo and run:

pnpm install
pnpm run build
pnpm run test

To run tests in watch mode:

pnpm run test:watch

๐Ÿ” CI/CD & Publishing

  • Automatically publishes to NPM when a new tag like v1.2.3 is pushed.
  • Requires a valid NPM_TOKEN secret in GitHub Actions.

โœจ Example Notifications

  • โœ… Success: "Build completed successfully!"
  • โš ๏ธ Warning: "Build completed with warnings."
  • โŒ Error: "Build failed. Check console for errors."

License

MIT ยฉ Shane Voirin