feature-flags-kay
v1.0.0
Published
A package for determining feature flag status based on environment variables or flag objects.
Downloads
5
Maintainers
Readme
feature-flag
Package
The feature-flag
package provides a function to determine if a feature is enabled based on either environment variables or feature flag objects. It is framework-agnostic and can be used in any JavaScript environment.
Installation
To use this package, install it via npm or Yarn:
npm install feature-flag
or
yarn add feature-flag
Function Signature
const isFeatureEnabled = (flag, user = {});
Parameters
flag
: Can be either a string or an object.- String: If the string matches an environment variable key prefixed with
REACT_APP_
(or no prefix for other environments), it checks if the environment variable is set to'true'
. - Object: If an object is provided, it is treated as a feature flag configuration with
target
andenabled
properties.
- String: If the string matches an environment variable key prefixed with
user
: (Optional) An object representing the user. Used to check if the user’s role matches the target roles of the feature flag.- Type:
{ role: string | string[] }
- Default:
{}
- Type:
Returns
boolean
: Returnstrue
if the feature is enabled based on either the environment variable or feature flag object; otherwise, returnsfalse
.
Usage Examples
Example 1: Using Environment Variables
Set up environment variables in your environment. For example, in a .env
file or environment configuration:
REACT_APP_FEATURE1=true
In your code:
import isFeatureEnabled from 'feature-flag';
// Check if the feature is enabled based on environment variables
const isFeature1Enabled = isFeatureEnabled('FEATURE1');
console.log(isFeature1Enabled); // true (if REACT_APP_FEATURE1 is 'true')
Example 2: Using Feature Flags Object
import isFeatureEnabled from 'feature-flag';
const featureFlags = {
feature1: { target: ['admin', 'developer'], enabled: false },
feature2: { target: ['qa', 'support'], enabled: true },
};
const user = { role: ['admin'] };
const isFeature1Enabled = isFeatureEnabled(featureFlags.feature1, user);
console.log(isFeature1Enabled); // true (because the user role matches the target)
const isFeature2Enabled = isFeatureEnabled(featureFlags.feature2, user);
console.log(isFeature2Enabled); // true (because the feature is enabled)
Example 3: Handling User Roles
import isFeatureEnabled from 'feature-flag';
const featureFlags = {
feature3: { target: ['admin'], enabled: true },
};
const user = { role: ['admin'] };
const isFeature3Enabled = isFeatureEnabled(featureFlags.feature3, user);
console.log(isFeature3Enabled); // true (because the user role matches the target)
Error Handling
- Throws an error if
flag
is neither a string nor an object.
Dependencies
dotenv
: If you need to load environment variables from a.env
file during development, you can usedotenv
. It should be listed as adevDependency
.
Installing dotenv
To use dotenv
for development, install it as a devDependency
:
npm install dotenv --save-dev
or
yarn add dotenv --dev
Using dotenv
Create a .env
file in your project root:
REACT_APP_FEATURE1=true
Load environment variables at the beginning of your application:
require('dotenv').config();
License
This package is licensed under the MIT License. See the LICENSE file for more details.