koa2不同开发者协作时使用不同数据库配置?
发布于 5 年前 作者 hiwold 4796 次浏览 来自 问答

在多人协作开发一个koa2的项目的时候,不同开发者用于测试的本地服务器配置可能是不相同的,例如:开发者A本地数据库的密码是123456 B开发者本地数据库的密码是root,如果他们修改的是同一个数据库配置文件的话,代码就会起冲突。

想知道这时候该怎么办,使用.gitignore文件忽略数据库配置文件吗?

6 回复

搭建一个线上共同使用的数据库做开发测试环境如何

  1. 共同数据库,
  2. 环境变量。

这个和项目无关。 建议使用环境变量的方式处理配置。 最应该是应该有同一个的开发数据库

需要忽略本地配置文件,例如 .local.env dev环境启动默认读取 .local.env 不存在再读取 prod.env 等等,或者进行多配置文件覆盖合并即可。

配置文件里写个共用的数据库配置,然后每个开发者可以通过两种方式修改数据库:

  1. 直接本地修改配置文件,但是不要提交该修改
  2. 每次启动时动态解析环境变量,覆盖配置文件的配置,MYSQL=mysql://user:password@127.0.0.1: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

回到顶部