arg-env
v2.0.0
Published
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
Downloads
14
Maintainers
Readme
arg-env
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
Installation
npm install --save-dev arg-env
Usage
In addition, check the example of usage
Command-line arguments
node --require=arg-env index.js --env-file=1.env --env-file=2.env
package.json
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
- Comments:
COMMENTED=comment #ed
is resolved tocomment
- Quote agnostic:
V1=val
,V2='val'
,V3="val"
are resolved toval
- Reuse:
EXPR=${VAR1} and ${VAR2}
is resolved tovalue1 and value2
- Default value:
DEFAULT=${UNDEFINED:-val}
is resolved toval
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
- Setup:
./setup.sh
- Build:
./prebuild.sh
- Launch commands:
./get_envs.sh
- Launch commands:
- Result: output.md
Envs list is taken from docker-compose/docker-compose.yml (service injected
) and written to docker/.env