babel-plugin-feature-flags

0.3.1 • Public • Published

babel-plugin-feature-flags

Build Status

This plugin is for Babel 6. If you need to support Babel 5 use the 0.2.x releases.

A babel plugin that implements feature flags for enabling and disabling features. This plugin is intended to be followed by a dead code elimination pass (Uglify, babel-plugin-dead-code-elimination, etc.) to remove any unreachable code.

Feature flags are implemented by looking for call expressions like isEnabled('my-feature') and checking if the feature is enabled/disabled/disabled in a feature map that is passed through the plugin options. If the feature is known to be enabled or disabled then the call expression is replace with a boolean literal (true or false respectively). If the feature is dynamic, than the call expression is left alone.

Example

Given the .babelrc

{
  "plugins": [["feature-flags", {
    "import": {
        "module": "my-features"
    },
    "features": {
        "new-feature": "disabled"
    }
  }]]
}

the JavaScript file

import isEnabled from 'my-features';
 
if (isEnabled('new-feature')) {
  // code
}

will be transformed to

import isEnabled from 'my-features';
 
if (false) {
  // code
}

Configuration

Here are the options that you can pass to the babel plugin.

  • options.import.module [String]: The name of the module that the feature function is imported from.
  • options.import.name [String (Optional)]: The name of the export that the feature function is imported from. Defaults to "default".
  • options.features [Map(String -> 'enabled' | 'disabled' | 'dynamic')]: An object whose keys are the names of features and whose values determine whether the feature is enabled/disabled/dynamic.

Readme

Keywords

Package Sidebar

Install

npm i babel-plugin-feature-flags

Weekly Downloads

22,417

Version

0.3.1

License

MIT

Last publish

Collaborators

  • ember-cli
  • mmun
  • rwjblue
  • stefanpenner