gr2m / spawn-pouchdb-server

Configurable per-app pouchdb-server as a drop-in replacement for CouchDB
27 stars 13 forks source link

spawn-pouchdb-server

Configurable per-app pouchdb-server as a drop-in replacement for CouchDB

NPM version Build Status Coverage Status Dependency Status

Motivation

  1. Simplify development setup

    CouchDB is a fantastic database, but setting it up for local development is not easy, as it also requires an Erlang runtime environment. Having a built-in PouchDB-Server in our apps will make CouchDB optional.

  2. Isolated CouchDB configurations

    Many Apps require couchdb users / admins / security settings etc. Using PouchDB makes it simple to isolate these in local development. (But if you don't mind the CouchDB dependency, you can also use node-multicouch for that).

Usage

// npm install --save spawn-pouchdb-server
var spawnPouchdbServer = require('spawn-pouchdb-server')

spawnPouchdbServer(function (error, server) {
  console.log('PouchDB Server stared at localhost:5985/_utils')
  server.stop(function () {
    console.log('PouchDB Server stopped')
  })
})

Full example with all options (and default values)

// npm install --save spawn-pouchdb-server
var spawnPouchdbServer = require('spawn-pouchdb-server')

spawnPouchdbServer({
  port: 5985,
  directory: './.db',
  backend: {
    name: 'leveldown',
    location: './.db'
  },
  log: {
    file: './.db/pouch.log',
    level: 'info'
  },
  config: {
    file: './.db/config.json'
  },
  timeout: 10000, // in ms
  verbose: false
}, function (error, server) {
  console.log('PouchDB Server stared at localhost:5985/_utils')
})

Options

Option Description default
port Port number where CouchDB API will be exposed 5985
directory Directory where PouchDB server will store it's files. Also default location for file based levelup back-ends 5985
backend Either an object with name and location properties (see below), or false for in-memory see below
backend.name npm module name of levelup storage back-end built in leveldown
backend.location Location option as passed to levelup(location) "./.db"
log.file Location of log file. Set to false to disable logging to a file. log.file is an alias for config.log.file. Set to false to not persist logs "./.db/pouch.log"
log.level One of debug, info, warning, error, none. log.level is an alias for config.log.level "info"
config.file Location of CouchDB-esque config file. Set to false to not persist configuration. "./.db/config.json"
config.* All the CouchDB Configuration, e.g. config.admins = {"adminuser": "adminpass"} to fix admin party
timeout Time to connect to backend in milliseconds 10000
verbose (true/false) Log status information false

Local setup & tests

git clone git@github.com:gr2m/spawn-pouchdb-server.git
cd spawn-pouchdb-server
npm install
npm test

License

MIT