Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Feature flipper for Node.js
CoffeeScript
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
src
.gitignore
.node-version
.npmignore
.nvm-version
.travis.yml
CHANGELOG.md
LICENSE
README.md Remove node file helper modules to restore browser functionality
index.js
package.json Remove node file helper modules to restore browser functionality

README.md

Build Status

Swerve

Feature flipping for Node.js

Installation

Add swerve to your package.json file and npm install. Or:

npm install swerve --save

If you're using Hem, also make sure you add it to your slug.json file as a dependency.

Configuration

Require Swerve (globally, in most cases). In CoffeeScript, you'll have something similar to below.

Swerve = require('swerve')

# Or, if you have this in some setup file
window?.Swerve = require('swerve')

Then, you'll need to configure Swerve with the feature settings you want for each environment by passing in a hash.

Swerve.configure
  development:
    notifications: true
  production:
    notifications: false

Once you've configured your feature settings, you need to set the current environment:

Swerve.setEnv('development')

Feature flipping

Now you can toggle different blocks of code throughout your app based on enabled features in one of two ways:

Check the feature as a property on the Swerve object.

if Swerve.notifications
  console.log('You have notifications!')
else
  console.log('Notifications coming soon.')

Call feature and pass in the feature name.

if Swerve.feature('notifications')
  console.log('You have notifications!')
else
  console.log('Notifications coming soon.')

Checking a feature returns the value from the configuration (or URL param, see section below). While you usually set the value to either true or false, you have the flexibility of setting it to whatever you may need (i.e. a hash of settings for that feature for each environment).

Toggling on the fly

A feature can be enabled by calling Swerve.enable('notifications') for example, which simply sets that feature to true under the current environment. You can optionally set the feature to a value:

notification_options =
  gutter:  true
  disrupt: false
Swerve.enable 'notifications', notification_options

Similarly, a feature can be disabled (set to false) by calling Swerve.disable('notifications').

Toggling with URL parameters

Features can also be enabled or disabled by passing in the feature name as a query string in the URL. These params take precedence over those set in the configuration.

So if we visit http://www.example.com?notifications=true in our production environment, then that feature will be considered enabled, regardless of the setting passed in through the original configuration.

License

Copyright 2013 Jico Baligod.

Licensed under the MIT License.

Something went wrong with that request. Please try again.