featurama
v0.2.5
Published
Enable/Disable features via JS config files.
Downloads
12
Maintainers
Readme
Featurama
Removing the chaos from your features.
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:
- Include
featurama-client.js
into your client-side javascript build. - 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']
|