Skip to content
This repository has been archived by the owner on May 25, 2022. It is now read-only.
/ dotenv-manipulator Public archive

dotenv-Manipulator for Node.js : Load, add, update or remove variables from both your .env file and process.env at runtime

License

Notifications You must be signed in to change notification settings

JiPaix/dotenv-manipulator

Repository files navigation

Build Status Known Vulnerabilities DeepScan grade NPM download count CodeFactor Discord badge

Introduction

dotenv-Manipulator :

  • Loads environment variables from a .env file to process.env
  • Adds, updates, or removes variables from both your .env file and process.env at runtime
  • Has no dependency (you don't need the dotenv package)

Installation

npm i dotenv-manipulator

Import/require

const Manipulator = require('dotenv-manipulator')
// or
import Manipulator from 'dotenv-manipulator'

Setup and start

Manipulator constructor has 3 optional arguments:

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.
// basic setup
const Manipulator = require('dotenv-manipulator')
const dotenvM = new Manipulator()
// complete setup
const Manipulator = require('dotenv-manipulator')
const dotenvM = new Manipulator('/path/to/project', false, 'utf-8')
// 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

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 :

PORT=3000
REMOTE=95.81.123.228

Update

To update a variable use

dotenvM.add(obj, true)

Example

Before

  • console.log(process.env.REMOTE) //=> '95.81.123.228'
  •  PORT=300
     REMOTE=95.81.123.228

Then

dotenvM.add({ REMOTE : '38.10.10.25' }, true)

After

  • console.log(process.env.REMOTE) //=> '38.10.10.25'
  • PORT=300
    REMOTE=38.10.10.25

Remove

Remove variable(s) from .env file and process.env

dotenvM.remove(input)

Inputs are keys from an object, an array or a string :
here's three way to achieve the same result.

// #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 :

// 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
// 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]
}

API

Full documentation available here

About

dotenv-Manipulator for Node.js : Load, add, update or remove variables from both your .env file and process.env at runtime

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •