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 👌 ]
You can install it from one of these 3 options:
$ npm install dynamic-variables
$ yarn add dynamic-variables
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
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)
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})
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! 🎉
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.