# bootable

> Easy application initialization for Node.js.

Latest version **0.2.4** (published 2014-11-19) · 0 weekly downloads

## Install

```sh
npm install bootable
pnpm add bootable
yarn add bootable
bun add bootable
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.4 |
| Published | 2014-11-19 |
| First published | 2013-08-16 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 0.4.0 |
| Dependencies | 3 |
| Known vulnerabilities | 0 (+2 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 67 |
| Author | Jared Hanson |
| Maintainers | jaredhanson |
| Keywords | boot, init, startup, express |

## Links

- npm: https://www.npmjs.com/package/bootable
- Repository: https://github.com/jaredhanson/bootable
- Issues: http://github.com/jaredhanson/bootable/issues
- npm.io page: https://npm.io/package/bootable

## Dependencies (3)

- [debug](https://npm.io/package/debug.md) 0.7.x
- [scripts](https://npm.io/package/scripts.md) 0.1.x
- [bootable-di](https://npm.io/package/bootable-di.md) 0.1.x

## Alternatives

- [@sveltejs/kit](https://npm.io/package/@sveltejs/kit.md) — 2.2M weekly downloads
- [@atlaskit/theme](https://npm.io/package/@atlaskit/theme.md) — 402.0K weekly downloads
- [@tangle-network/brand](https://npm.io/package/@tangle-network/brand.md) — 10.0K weekly downloads
- [seneca](https://npm.io/package/seneca.md) — 7.4K weekly downloads
- [@bsb/base](https://npm.io/package/@bsb/base.md) — 7.2K weekly downloads

## Recent versions

- 0.2.4 (latest) — 2014-11-19
- 0.2.3 — 2014-05-08
- 0.2.2 — 2013-12-05
- 0.2.1 — 2013-12-01
- 0.2.0 — 2013-12-01
- 0.1.0 — 2013-08-18
- 0.0.2 — 2013-08-16

## README

# Bootable

[![Build](https://travis-ci.org/jaredhanson/bootable.png)](https://travis-ci.org/jaredhanson/bootable)
[![Coverage](https://coveralls.io/repos/jaredhanson/bootable/badge.png)](https://coveralls.io/r/jaredhanson/bootable)
[![Quality](https://codeclimate.com/github/jaredhanson/bootable.png)](https://codeclimate.com/github/jaredhanson/bootable)
[![Dependencies](https://david-dm.org/jaredhanson/bootable.png)](https://david-dm.org/jaredhanson/bootable)


Bootable is an extensible initialization layer for [Node.js](http://nodejs.org/)
applications.

Bootable allows initialization *phases* to be registered for an application.
These phases will be executed sequentially during startup, after which the
application will be ready to run.

## Install

    $ npm install bootable

## Usage

Bootable is generally applicable to any Node.js application or application
framework.  [Express](http://expressjs.com/) will be used below, for
illustrative purposes, as it is the most popular way of developing web
applications.

#### Mixin Bootable

Create a new application and mixin the bootable module.

```javascript
var express = require('express')
  , bootable = require('bootable');

var app = bootable(express());
```

Once mixed-in, the application will have two additional functions: `app.boot`
and `app.phase`.

#### Register Phases

An application proceeds through a sequence of phases, in order to prepare
itself to handle requests.  Modules need to be configured, databases need to be
connected, and routes need to be drawn.

Bootable packages phases for these common scenarios:

```javascript
app.phase(bootable.initializers('config/initializers'));
app.phase(bootable.routes('routes.js'));
```

Custom phases can be registered as well, and come in synchronous and
asynchronous flavors:

```
app.phase(function() {
  // synchronous phase
});

app.phase(function(done) {
  setTimeout(function() {
    // asynchronous phase
    done();
  }, 1000);
});
```

#### Boot Application

Call `app.boot` with a callback to boot your application.  Phases will be
executed sequentially, and the callback will be invoked when all phases are
complete.

```
app.boot(function(err) {
  if (err) { throw err; }
  app.listen(3000);
});
```

This allows you to split off your initialization steps into separate, organized
and reusable chunks of logic.

## Tests

    $ npm install
    $ npm test

## Credits

  - [Jared Hanson](http://github.com/jaredhanson)

## License

[The MIT License](http://opensource.org/licenses/MIT)

Copyright (c) 2013 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)>

---
_Source: https://npm.io/package/bootable · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
