dynamic-variables

1.1.0 • Public • Published

Dynamic variables based on environment (or anything else!)
feats' dynamic-variables is a minimalist choice for switching environmental variables in your app.

[ Getting started 🤓 | Check it on NPM 👌 ]

divider

Setting up

Installing it

You can install it from one of these 3 options:

with NPM

  $ npm install dynamic-variables

with Yarn

  $ yarn add dynamic-variables

manually

you may also install it as a development dependency in a package.json file:

  // package.json
  "dependencies"{
    "dynamic-variables": "latest"
  }

Then install it with either npm install or yarn install

divider

Getting started

Basic usage

import { env } from 'dynamic-variables'
 
// it will be assigned 'API_SERVER_PUBLIC` in the browser and 'API_SERVER_CONTAINER' in the server
const backendEndpoint = env(process.env.API_SERVER_PUBLIC, process.env.API_SERVER_CONTAINER)

Advanced usage

Multiple named environments + Custom environment detector

import { env, setDetector } from 'dynamic-variables'
 
setDetector(() => process.browser ? 'BROWSER' : 'SSR')
 
// it will be assigned 'API_SERVER_PUBLIC` in the browser and 'API_SERVER_CONTAINER' in the server
const backendEndpoint = env({BROWSER: process.env.API_SERVER_PUBLIC, SSR: process.env.API_SERVER_CONTAINER})

Multiple services endpoints

import environment, { env } from 'dynamic-variables'
 
module.exports = environment({
  redis: env(process.env.REDIS_CONTAINER),
  backend: {
    graphq: env(process.env.GRAPHQL_SERVER_PUBLIC, process.env.GRAPHQL_SERVER_CONTAINER),
    // 🌈 Note that backend.rest below is a function! ☄️
    // As such, it can avoid ReferenceErrors in case the variables in it were not defined
    rest: () => env(process.env.REST_SERVER_PUBLIC, process.env.REST_SERVER_CONTAINER),
  }
})

For more examples, please check the tests file.

I hope you enjoy using this tiny lib! 🎉

divider




This project is sponsored by feats.
Join a community of people helping each other get credit for their roles in projects.
From developing products and apps to architecture and campaigns.




Readme

Keywords

none

Package Sidebar

Install

npm i dynamic-variables

Weekly Downloads

126

Version

1.1.0

License

MIT

Unpacked Size

5.77 kB

Total Files

4

Last publish

Collaborators

  • zvictor