dynamic-variables
v1.1.0
Published
<p align="center"> <strong>Dynamic variables based on environment (or anything else!)</strong><br /> <sub>feats' dynamic-variables is a minimalist choice for switching environmental variables in your app.</sub> </p>
Downloads
333
Readme
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
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! 🎉