Joel Purra: Developer and more

Build Status Coverage Status


Check out the presentation/demo.

Log bespoke.js events and state to the console

The default events are logged by default, as are any custom events from plugins.


Download the production version or the development version, or use a package manager.


This plugin is shipped in a UMD format, meaning that it is available as a CommonJS/AMD module or browser global.

For example, when using CommonJS modules:

var bespoke = require('bespoke'),
  logbook = require('bespoke-logbook');

bespoke.from('#presentation', [

When using browser globals:

bespoke.from('#presentation', [

Overriding event logging

You can override logging per eventName, either at instantiation or dynamically. You can pass false to turn off the specific logger, a plain string, or a function.

Custom events

The function will be called once before firing the event, and once after, with the result -

// Before the event handlers have been called
myCustomEventLoggingOverride("fire", eventName[, eventData, ...])

// After all event handlers have been called
myCustomEventLoggingOverride("fired", result, eventName[, eventData, ...])

Default events

The default events are fired a bit differently than custom events - they aren’t intercepted, but rather listened to.

// An event parameter is passed

Override at instantiation

bespoke.horizontal.from("article", {
    logbook: {
        overrides: {
            // An example of a default event
            "activate": function(e) {
                console.log("activate", "Slide #" + e.index + " was activated!", e.slide);
            // An example of a custom event
            "custom1": function() {
                console.log("Custom logging is so much fun", arguments)
            // An example of a custom event logged with a static string
            "custom2": "Will only log this string"

Override dynamically

bespoke.plugins.logbook.override("deactivate", function(e) {
    console.log("deactivate", "Slide #" + e.index + " was deactivated!", e.slide);

Enable/disable logbook

// logbook is making a lot of noise in the console

// logbook is good as dead

// logbook is back once again, with the ill behaviour

Package managers


$ npm install bespoke-logbook


$ bower install bespoke-logbook


  • Accept separate before/after custom event overrides.
  • Normalize default and custom event overrides.
  • Mimic the default event handlers’ event object?
  • Allow option to not autostart/enable logbook at instantiation.


Mark Dalgleish for bespoke.js and related tools. This plugin was built with generator-bespokeplugin.

Adam Edmond, addyeddy on flickr, for his photo Old log book (CC BY 2.0).

My best friend, bespoke-convenient, for continued support - rain and shine. I love you, man.


Copyright (c) 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, Joel Purra All rights reserved.

When using bespoke-logbook, comply to the MIT license. Please see the LICENSE file for details, and the MIT License on Wikipedia.

Live programming stream