Package Exports
- babel-plugin-feature-flags
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (babel-plugin-feature-flags) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
babel-plugin-feature-flags
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.