hammerspoon2-docs
    Preparing search index...

    Function loadSpoon

    • Load a Spoon - a packaged, reusable piece of configuration - by name, from the Spoons directory inside your config directory. A Spoon must contain a well-formed spoon.json (with non-empty name, author, version, and description fields) and an init.js, or loading fails with an exception. init.js is loaded through the same require() used for the rest of your config, so it can itself require() further files from within the Spoon's own directory using relative paths. On success, the Spoon's module.exports is also stored on hs.spoons under its name, so other code can reach an already-loaded Spoon without needing to call loadSpoon() again. init.js must set module.exports to an object (or a function, since functions are objects too) - loading fails with an exception otherwise. Its author, description, and version properties are then set from spoon.json, overwriting any of the same name the Spoon's own init.js set, so that information is always present and always reflects what's on disk. If the resulting object has an init() method, it's called automatically (with this bound to the object) before loadSpoon() returns - matching Hammerspoon 1's behavior. An exception thrown from init() fails the load: nothing is stored on hs.spoons, and loadSpoon() throws. Unlike init.js itself (which require() only ever evaluates once), init() runs again on every loadSpoon() call for the same Spoon, since the same cached object is returned each time - write it to be safe to call more than once, or do one-time setup at init.js's top level instead.

      Parameters

      • name: string

        The Spoon's name, matching its directory name under Spoons/

      Returns Object

      Whatever the Spoon's init.js assigned to module.exports