Load, add, update or remove variables from both your .env file and process.env at runtime
npm install dotenv-manipulator
.env file to process.env
dotenv package)
console
npm i dotenv-manipulator
`
Import/require
`js
const Manipulator = require('dotenv-manipulator')
// or
import Manipulator from 'dotenv-manipulator'
`
Setup and start
Manipulator constructor has 3 optional arguments:
`js
new Manipulator(envPath, throwable, encoding)
`
- Path to .env, default is process.cwd().
- If set to true functions throw errors whenever there's an incorrect input.
- Specify file encoding, default is utf8.
`js
// basic setup
const Manipulator = require('dotenv-manipulator')
const dotenvM = new Manipulator()
`
`js
// complete setup
const Manipulator = require('dotenv-manipulator')
const dotenvM = new Manipulator('/path/to/project', false, 'utf-8')
`
`js
// undefined = default value
const Manipulator = require('dotenv-manipulator')
const dotenvM = new Manipulator(undefined, true, 'latin1')
`
Manipulate
Add
Add object keys and values to .env file and process.env
`js
const obj = { REMOTE: '95.81.123.228', PORT: 3000 }
dotenvM.add(obj)
console.log(process.env.REMOTE) //=> '95.81.123.228'
console.log(process.PORT) //=> '3000'
`
.env file :
`console
PORT=3000
REMOTE=95.81.123.228
`
Update
To update a variable use
`js
dotenvM.add(obj, true)
`
$3
#### Before
- `js
console.log(process.env.REMOTE) //=> '95.81.123.228'
`
- `console
PORT=300
REMOTE=95.81.123.228
`
#### Then
`js
dotenvM.add({ REMOTE : '38.10.10.25' }, true)
`
#### After
- `js
console.log(process.env.REMOTE) //=> '38.10.10.25'
`
- `console
PORT=300
REMOTE=38.10.10.25
`
Remove
Remove variable(s) from .env file and process.env
`js
dotenvM.remove(input)
`
Inputs are keys from an object, an array or a string :
here's three way to achieve the same result.
`js
// #1
dotenvM.remove('REMOTE')
dotenvM.remove('PORT')
// #2
dotenvM.remove(['REMOTE', 'PORT'])
// #3
dotenvM.remove({ REMOTE: 'value that dotenvM wont read', PORT: 'no.. really it doesnt care' })
`
Try catch and DEBUG
Here's two example :
`js
// DEBUGGING
dotenvM.throwable = false
let debug = dotenvM.add(['wrong', 'type', 'of', 'data'])
let debug_1 = dotenvM.add({ GOOOD: 'type', OF: 'data' })
console.log(debug.message)
//=> [ADD_ERROR]: object must be [object Object] but received [object Array]
console.log(debug_1)
//=> undefined
`
`js
// TRY CATCH
dotenvM.throwable = true
try {
dotenvM.add(['wrong', 'type', 'of', 'data'])
} catch(e) {
console.log(e.message)
//=> [ADD_ERROR]: object must be [object Object] but received [object Array]
}
``