在多人协作开发一个koa2的项目的时候,不同开发者用于测试的本地服务器配置可能是不相同的,例如:开发者A本地数据库的密码是123456 B开发者本地数据库的密码是root,如果他们修改的是同一个数据库配置文件的话,代码就会起冲突。
想知道这时候该怎么办,使用.gitignore文件忽略数据库配置文件吗?
搭建一个线上共同使用的数据库做开发测试环境如何
- 共同数据库,
- 环境变量。
这个和项目无关。 建议使用环境变量的方式处理配置。 最应该是应该有同一个的开发数据库
需要忽略本地配置文件,例如 .local.env
dev环境启动默认读取 .local.env
不存在再读取 prod.env
等等,或者进行多配置文件覆盖合并即可。
配置文件里写个共用的数据库配置,然后每个开发者可以通过两种方式修改数据库:
- 直接本地修改配置文件,但是不要提交该修改
- 每次启动时动态解析环境变量,覆盖配置文件的配置,MYSQL=mysql://user:[email protected]:3306/database node app.js
建议使用第二种方式,不用每次修改完又 git checkout 掉
大体上可以通过区分环境,加载不同配置解决这个问题: 配置可以区分通用配置以及环境依赖配置,然后通过合并配置的形式获得一份合成的配置。
组织形式1
config/{env}/db.js config/local_manongA/db.js config/local_manongB/db.js
config/other.js
.env git配置忽略这个文件,然后内部写入环境变量
组织形式2(egg)
config/config.{env}.js 同上
config/env git配置忽略这个文件,然后内部写入环境变量
env可以不通过文件获取,可以配合本地环境变量传入(这样不用每次都得指定启动参数),自己实现建议参考egg https://github.com/eggjs/egg-core/blob/ca04a457c8cc7a1c1cc77a4e62a6cfde29a5ef19/lib/loader/egg_loader.js#L105
可以直接使用的模块: https://www.npmjs.com/package/config