#环境变量 #json文件 #json配置 #变量 #环境 #json路径 #子进程

app json_env

从JSON文件(默认为.env.json)加载环境变量,并使用它们启动子进程

11个稳定版本

1.3.0 2022年11月4日
1.2.1 2022年11月3日
1.1.13 2022年10月3日
1.1.12 2022年9月30日
0.1.0 2022年8月22日

#963开发工具

每月 35次下载

Apache-2.0

19KB
246

json_env

环境变量加载器

npmjs.com Crates.io License

json_envdotenv,但使用JSON。它从JSON文件(默认为.env.json)加载环境变量,并使用它们启动子进程。将配置存储在环境变量中,与代码分离,是基于 十二因素应用方法

如何安装

使用homebrew

$ brew tap brodo/json_env
$ brew install json_env

使用NPM

$ npm i -g @brodo/json_env

使用cargo

$ cargo install json_env

或者从 发布页面 下载您平台的二进制文件,并将它们放入您的 $PATH。

如何使用

只需将任何程序作为参数运行json_env

$ json_env my_program

传递给 json_env 的附加命令行参数将被转发到子进程

$ json_env echo "Test"

Test

示例

.env.json

{
    "NODE_ENV": "DEV",
    "MY_USER": "Carl",
    "NUM_USERS": 10,
    "nested": {
        "hello": "world",
        "boo": "far"
    }
}

Shell

$ json_env env
MY_USER=Carl
NODE_ENV=DEV
NUM_USERS=10
nested={"boo":"far","hello":"world"}
[...]

环境变量扩展

您可以在env文件中包含现有的环境变量以进行扩展

.env.json

{
  "MY_VAR": "$FOO",
  "MY_OTHER_VAR": "User:$USER"
}

Shell

$ json_env -e env
FOO=Bar
MY_OTHER_VAR=User:Carl
MY_VAR=Bar
USER=Carl
[...]

JSON路径支持

在某些情况下,您已经在JSON文件中定义了环境变量,但不在根级别。以这个 Azure Function local.settings.json文件 为例


{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Values 属性包含我们感兴趣的环境变量。您可以使用此文件通过提供 JSON路径 .Values 使用 -p 标志来运行定义在 Values 中的 app.js

$ json_env -c local.settings.json -p .Values node app.js

使用多个配置文件

在某些情况下,使用多个配置文件是有意义的。例如,一个文件可以包含默认值并检查到您的版本控制系统中,另一个文件可以用来覆盖其中的一些值。

defaults.json

{
  "SERVER_URL": "https://example.com/foo",
  "USER": "TO_BE_OVERWRITTEN",
  "PASSWORD": "TO_BE_OVERWRITTEN"
}

my_settings.json

{
  "USER": "admin",
  "PASSWORD": "hunter2"
}

使用多个 -c 标志来添加多个配置文件

$ json_env -c defaults.json -c my_settings.json env
PASSWORD=hunter2
SERVER_URL=https://example.com/foo
USER=admin
[...]

较后配置的文件会覆盖较早的文件。您也可以使用多个JSON路径,它们按顺序应用。

许可证

json_env 根据 Apache 2.0 许可证授权。

依赖项

~6–8MB
~147K SLoC