Advanced WebPack Part 3 - Creating a custom notifier plugin

2 min read Original article ↗

At Lonely Planet we use the heck out of WebPack. It's an incredibly powerful tool.

Sometimes it takes a while though. I decided today that rather than watching the command line while it compiles to know when I'm good to refresh the browser, I'd just learn how to write a plugin to notify me about it.

Turns out it's pretty darn simple.

// ./notifier.js
"use strict";

class Notifier {
  apply(compiler) {
    compiler.plugin("done", (stats) => {
      const pkg = require("./package.json");
      const notifier = require("node-notifier");
      const time = ((stats.endTime - stats.startTime) / 1000).toFixed(2);

      notifier.notify({
        title: pkg.name,
        message: `WebPack is done!\n${stats.compilation.errors.length} errors in ${time}s`,
        contentImage: "https://path/to/your/logo.png",
      });
    });
  }
}

module.exports = Notifier;

Any class or function or even object with an apply function defined will automtically recieve an instance of the WebPack Compiler.

You can then hook into one of many different lifecycle events.

Then in your webpack.config.js...

const Notifier = require("./notifier");

// ...
{
  plugins: [new Notifier()]
}  

There's a whole lot of cool things you can do by creating your own WebPack plugins!

Subscribe to our newsletter

Get the latest posts delivered right to your inbox.

Success!

Now check your inbox and click the link to confirm your subscription.

Please enter a valid email address

Oops! There was an error sending the email, please try later.

Recommended for you