Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

npm version Build Status Coverage devDependency Status Dependency Status


Sends native desktop notifications if CLI apps fail

Technically: if a command exits with an exit code other than 0


To use it in your project:

$ npm install --save-dev cli-error-notifier

To use it globally:

$ npm install --global cli-error-notifier

It requires Node.js (v4 or greater).

General usage

$ onerror --help

  Sends native desktop notifications if CLI apps fail

	  $ onerror <command> [options]

	  --title,   -t   Sets the title of the notification.
	                  Default: "An error has occured"
	  --message, -m   Sets the message body of the notification.
	                  Default: "Check the terminal for more information"
	  --icon,    -i   Sets an icon. Can be any absolute path.
	  --sound,   -s   Defines which sound to use.
	                  Use "mute" to disable default sound notification.
	                  Options: Mute, Basso, Blow, Bottle, Frog, Funk, Glass, Hero,
	                           Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink
	                  Default: Bottle
	  --version  -v   Displays the version number.
	  --help     -h   Displays the help.

	  $ onerror "wget"
	  $ onerror "wget" -s mute
	  $ onerror "wget" -t Error -m "My error message"
	  $ onerror "wget"  -s Glass -i

Usage with npm scripts

This little CLI comes in handy when writing build scripts.

Let’s imagine you have setup the following npm script for linting your JavaScript files:

  "scripts": {
    "eslint": "eslint src",

With using cli-error-notifier a desktop notification can be generated at the moment the linting fails:

  "scripts": {
    "eslint": "onerror \"eslint src\"",

This is especially useful for watching files while developing. You could use it in conjunction with onchange like in the following example:

  "scripts": {
    "eslint": "eslint src",
    "eslint:fix": "npm run eslint --silent -- --fix",
    "eslint:watch": "onchange \"src/**/*.js\" -- onerror \"npm run eslint --silent\""

It also works flawlessly together with npm-run-all.

Cross platform compatibility

cli-error-notifier uses the brilliant node-notifier and therefore should work with Notification Center for macOS, notify-osd/libnotify-bin for Linux, Toasters for Windows 8/10, or taskbar Balloons for earlier Windows versions. Growl is used if none of these requirements are met.


  • onchange - Watch files and folders and run a command when anything is changed.
  • npm-run-all - CLI tool to run multiple npm-scripts in parallel or serial.


MIT © Michael Kühnel