featurama

0.2.5 • Public • Published

Featurama

Circle CI

Removing the chaos from your features.

Chaos

Featurama gives you feature flags for enabling front-end features at build-time and run-time, while using the same configuration.

Installation

npm install featurama

Usage

To use build-time featurama:

var featurama = require('featurama')({
      featurePath: '/features',
      root: '/src'
    });

To use run-time featurama:

  1. Include featurama-client.js into your client-side javascript build.
  2. Set up a build-task that adds the run-time configuration file to your client-side javscript assests (See: featurama.buildRunTimeConfigFile() in the API section below).

Configuration Setup

In /features (or whatever you specified as the featurePath):

module.exports = {
  featureName: 'Feature 1',
  buildTimeEnabled: false,
  runTimeEnabled: function() { return !!Modernizr.history; },
  jsFiles: [
    'feature1.js',
  ],
  vendorFiles: [],
  scssFiles: [
    '_feature1.scss',
  ],
};

API

Run-time Methods

featurama.enabled(featureName)

Given a feature name, this indicates if it is enabled or not.

Parameter Type Description
featureName string the name of the feature
Returns: boolean true if enabled

featurama.on(featureName)

Given a feature name, this enables that feature.

Parameter Type Description
featureName string the name of the feature

featurama.off(featureName)

Given a feature name, this disables that feature.

Parameter Type Description
featureName string the name of the feature

Build-time Methods

featurama.isBuildTimeEnabled(buildTimeEnabled)

Return the boolean value or executes the function that defines if this feature is enabled or not.

Parameter Type Description
buildTimeEnabled boolean | function data from the config file that indicates enabled status
Returns: boolean true if enabled

featurama.buildFeatureExclusions

Build a list of files to exclude

Type Description
Returns: object object of arrays containing files to exclude

featurama.buildFeatureInclusions()

Build a list of files to include

Type Description
Returns: object object of arrays containing files to include

featurama.featureValuesList()

Get a list of all of the declared features, their states, and file lists

Type Description
Returns: object combined feature configs

featurama.featureList()

Build a key:value list of features and their enabled states

Type Description
Returns: object key: value pairs

featurama.buildRunTimeConfigFile(outputFolder, outputType)

Generates a config file (named runTimeFlags.js) to be included in your client-side code. This file bridges the gap between your featurama configuration and your run-time feature flags.

Parameter Type Description
outputFolder string path to the folder where you want to generate runTimeFlags.js; example: path/to/my/scripts.
outputType string The type of output ['var', 'ES6']

Package Sidebar

Install

npm i featurama

Weekly Downloads

32

Version

0.2.5

License

none

Last publish

Collaborators

  • robtarr