Neglected Pulse Machine

    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.

    Install

    npm i babel-plugin-feature-flags

    DownloadsWeekly Downloads

    25,917

    Version

    0.3.1

    License

    MIT

    Last publish

    Collaborators

    • ember-cli
    • mmun
    • rwjblue
    • stefanpenner