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

env.json

v2.0.1

Published

env.json is a take on the traditional .env file pattern with an addition to be able to set the default from the same file opposed to additional logic.

Downloads

411

Readme

env.json

npm i --save env.json

What is it

env.json is a package for managing environment variables for node micro services using a json file.

How it works

The package offers two functions:

  • envSetup This will parse the env.json file at the root of your project:
    • It will check if the process.env contains the provided key, if so continue.
    • If the process.env does not contain the said key but a default option is set, then the default value will be set as the env var
    • If no process.env is found and no default value is found, an error is thrown
  • envGet This will return the value of an environment variable
    • You can pass the reference key. This is essentially a proxy to the actual name thus enabling you to ref. keys for alternate env. variables or rename as your app grows.
    • You can pass the actual name of the env variable.
    • If neither the env var nor ref is found an error is thrown

How to use

First create an env.json file at the root of your project and ignore it from your git repo (this example demonstrates default values and non-default options):

{
  "environment" : {
    "key"     : "APP_ENVIRONMENT",
    "default" : "develop"
  },
  "url"         : {
    "key"     : "APP_URL",
    "default" : "https://github.com/jdcrecur/env.json"
  },
  "port"         : {
    "key"     : "APP_PORT"
  },
  "password"    : {
    "key"     : "BASIC_AUTH_PASSWORD"
  }
}

Second import the functions to set the environment variables

import {envSetup} from 'env.json'

envSetup()

Third use the data in your app

import {envGet} from 'env.json'

console.log( 'the app is listening on port: ' envGet('port') )

No default

You might want to only set certain config data into the environment variables and not even in the env.json file.

Simply don't pass the default option.

  "password"    : {
    "key"     : "BASIC_AUTH_PASSWORD"
  }
}

Options

By default the package will try to parse in utf8 format a file at the root of your project named env.json

You can override this by passing an option:

envSetup({ path: './config/env.json', encoding: 'utf16' })

(see the unit tests for an example in the repo)

Suggestions

Welcome, create an issue on github.