node-toggles

A helper to using feature toggles in NodeJS

Usage no npm install needed!

<script type="module">
  import nodeToggles from 'https://cdn.skypack.dev/node-toggles';
</script>

README

node-toggles

This is a helper to work with feature toggles in NodeJS. It defines multiple constructors to help controlling the feature toggles.

Install

npm install --save node-toggles

Usage

  • Creating a feature toggles object:
  // require the toggles module
  const toggles = require("node-toggles");

  // creates a toggles object with no features activated
  const emptyFeatureToggles = toggles.empty();

  const activeFeaturesArray = [
    { code: "example_feature", status: true },
    { code: "test_feature", status: false } 
  ]
  // creates a toggles object with the passed features
  const arrayFeatureToggles = toggles.fromArray(activeFeatures);

  // creates a toggles object with the environment variables that ends with the "feature" sufix
  const envFeatureToggles = toggles.fromEnv();

  const activeFeaturesJson = {
    "example_feature": true,
    "test_feature": false
  };
  // creates a toggles object with the features defined in the json
  const jsonFeatureToggles = toggles.fromJson(activeFeaturesJson);

  • To define a toggled feature you can:
  // require the toggles module
  const toggles = require("node-toggles");

  const featureToggles = toggles.fromJson({
    "example_feature": true
  });

  // check if the toggle is active
  if (featureToggles.active ("example_feature")) {
    // feature code
  } else {
    // alternative code
  }

  // use the "feature" function
  featureToggles.feature("example_feature", () => {
    // feature code
  });

  // optionally you can pass an alternative function
  featureToggles.feature("example_feature", () => {
    // feature code
  }, () => {
    // alternative code
  });

  • You can also set features during execution
  // require the toggles module
  const toggles = require("node-toggles");

  const featureToggles = toggles.empty();

  // you can directly pass the feature toggle status
  featureToggles.set("example_feature", true);

  // or pass an avaliation function, to decide wheter the feature will be executed exery feature toggle test
  featureToggles.set("example_feature", () => {
    return 1 + 1 === 2;
  });