Skip to content

Node.js package to work with `.env` files in the same way as docker and docker-compose via `--env-file` or `"env_file"` in package.json

License

Notifications You must be signed in to change notification settings

askirmas/arg-env

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

arg-env

Node.js package to work with .env files in the same way as docker and docker-compose via argument --env-file=… in CLI, "env_file": […] in package.json and environment variables ENV_FILE_?=…

build@ci codecov Maintainability Scrutinizer Code Quality CodeFactor

dependencies Status version license

Installation

npm install --save-dev arg-env

Usage

In addition, check the example of usage

See Node docs

node --require=arg-env index.js --env-file=1.env --env-file=2.env

# jest
node -r arg-env node_modules/.bin/jest --env-file=test.env

See npm docs

{
  "config": {
    "env_file": [
      "3.env",
      "./4.env"
    ]
  },
  "scripts": {
    "start:dev": "node --require=arg-env index.js"
  }
}

Parser only

import { parse } from "arg-env"

Features

All specifications are taken from output of actual docker run

Syntax

Closure

Files are independent but rely on global environment

Precedence and overwrite

Files don’t overwrite global environment. Next file takes precedence over previous. In addition, files in package.json has less priority than in command line arguments.

Comparison

Other env JS packages hasn't command-line and package interfaces, more-over, didn't behave like docker: see details ./src/parse.spec.ts. Input is ./src/specs/input.env, output saved in ./src/specs/spec.json via ./src/specs/get.sh.

Tool name Quotes Isolated Inline comment Reuse Default value Weird names Error syntax Var of Var
docker-compose '," Yes Yes Yes Yes Yes No No
arg-env '," Yes Yes Yes Yes Yes Not yet Not yet
dotenv '," Yes No No No No No No
dotenv-expand '," No? No More No No No No
dotenv-extended '," No? No No No No No No
envfile No - No No No Other No No

Etc

Experiments with .env stuff

Envs list is taken from docker-compose/docker-compose.yml (service injected) and written to docker/.env