@gongt/jenv-data v1.3.4
jenv
save config to git (as json) and set (some of) them as environment variables
保存、同步配置文件的工具
用“json”格式保存、使用,用外部命令“git”同步数据
install & usage
由于使用git同步,PATH环境变量中必须能找到git
sudo npm -g install @gongt/jenv
jenv --help
配置文件示例
目录结构
environments.json
{
"name": "the_setting_title",
"environments": {
"default": {
"abstract": true,
"inherits": false
},
"production": {
"inherits": "default"
},
"debug": {
"inherits": "default"
}
}
}
这将定义3套配置文件,分别名为“default”、“production”、“debug”。其中“production”和“debug”继承了default,可以理解为默认值默认值。继承可以嵌套,但不能多继承。
由于设置了abstract,默认(default)配置不允许直接使用,防止误用。
配置文件树中每一个目录:
每当发现一个目录时,会同时找到所有被继承的配置,并按继承关系生成最终结果。 如果有3个配置文件,其中继承关系 C → B → A,有:
A.json:
{ "key": "value A", “A”: 1 }
B.json:{ "key": "value B", "B": 2 }
C.json:{ "key": "value C", "C": 3 }
则:使用B配置时,得到的配置文件内容为:{ "key": "value B", “A”: 1, "B": 2 }
使用C配置时,得到的配置文件内容为:{ "key": "value C", “A”: 1, "B": 2, "C": 2 }
subdir1/、subdir1/subdir1_1/、subdir2/、....
配置文件正文,每个文件夹包含每个环境下的配置,但最终只产生一个配置文件(当前选择的那个环境的配置)
.root/*.json
这个目录包含配置文件对象树的“根”对象,其他目录均添加在该对象上。
这个目录也可以有子目录,但最好不要这样
.environment
这个目录的名称会转换成大写".ENVIRONMENT",然后像普通文件夹一样附加在根对象上。
但还有一个特殊作用:这个文件夹生成的结果,只能是一个键值对对象,不能包含子对象、数组等高级数据类型(也就不能包含子文件夹)
它的结果会作为环境变量使用。
用法
(详细说明参考 jenv --help
)
初始化
下载一套新的配置:(不能和已有的重复)
jenv --pull git@git.github.com/GongT/my-config.git
下载新的到全局:
jenv --pull --global git@git.github.com/GongT/my-config.git
配置、环境操作
选择配置集:
jenv --set the_setting_title
选择环境:
jenv --env deploy
查看当前选择的环境、配置集状态:
jenv --status
查看当前配置文件内容:
jenv --show
下载和上传配置内容
下载新配置
jenv --download
上传修改过的配置
jenv --download
注:使用git上传,也就有可能出现冲突,jenv完全不能解决冲突,请使用其他工具。