Defer construction of a service until it is needed.

npm install defur
4 downloads in the last week
16 downloads in the last month



Version: 0.2.0
Master build: Master branch build status
Develop build: Develop branch build status

This library makes it easy to defer the construction or execution of a service until it's needed.
It can be installed in whichever way you prefer, but I recommend NPM.

Basic usage

var defur = require('defur');
var http = require('http'); // Just using HTTP as an example
var services = {

    // Define the service inline...
    get server() {
        return defur('server', this, function() {
            return http.createServer().listen(3000);


// ...or define the service later
defur.define('server', this, function() {
    return http.createServer().listen(3000);

// Use the service
services.server.on('request', function() {});

// Service is only created once
services.server === services.server // true


I accept contributions to the source via Pull Request, but passing unit tests must be included before it will be considered for merge.

$ make install
$ make tests

If you have Vagrant installed, you can build the dev environment to assist development. The repository will be mounted in /srv.

$ vagrant up
$ vagrant ssh

Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)
$ cd /srv


The content of this library is released under the MIT License by Andrew Lawson.
You can find a copy of this license at or in LICENSE

npm loves you