npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

dotenv-manipulator

v3.0.1

Published

Load, add, update or remove variables from both your .env file and process.env at runtime

Downloads

382

Readme

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