在实际的项目会存在多个不一样的环境,不一样的环境下,一些配置是不相同的,如何在不一样的环境下调用不一样的配置,提升开发效率?mysql
config-lite
模块首先引入一个配置模块config-lite,使用命令npm i config-lite --save
安装。git
一般咱们会针对不一样的环境,将配置写入不一样的配置文件中,在Node项目下新建config
目录,里面新建不一样环境的配置文件,这里我以『开发』以及『生产』两个环境做为例子来说解如何操做。sql
开发环境中,咱们在config
目录下新建两个文件:test.js
和default.js
,你可能会问,为啥没有生产机配置文件,由于生产机配置要在生产环境下再建立嘛。npm
在test.js
配置文件中写入代码以下(PS. 这里以mysql的配置为例):json
// test.js module.exports = { mysql : { host: "localhost", user: "lupeng", password: "080910", database: "b1imd" } };
default.js
里写入一些默认的配置文件,例如session
的配置等。windows
// default.js module.exports = { mysql : { host: "10.20.141.220", user: "lupeng", password: "123456", database: "b1imd" }, session: { secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { maxAge: 1000*60*60 } } };
好了,配置文件写好了,如何使用呢?这里咱们使用的 config-lite
模块,这个模块是依据环境变量来选择不一样的配置文件的,因此在使用以前咱们须要修改package.json
里的启动命令:服务器
"scripts": { "start": "NODE_ENV=production supervisor --harmony -i views/ ./bin/www", "test": "NODE_ENV=test supervisor --harmony -i views/ ./bin/www" },
能够看到,上面有两条启动命令,一条是针对生产机,设置了NODE_ENV=production
,一条是针对测试机,设置了NODE_ENV=test
,当咱们使用npm test
启动项目的时候,config-lite
会去抓取test.js
配置,而且会与default.js
里配置去合并,若是有相同的对象,会覆盖default.js
里的配置。如上例子都有mysql的对象,那么这里会以test.js
里的对象为准。cookie
好了,下面来介绍一下如何在项目中使用config-lite
模块,在app.js
里代码以下:session
// 省略... var config = require('config-lite')(__dirname); // 省略... app.use(session(config.session)); console.log("mysql服务器:" + config.mysql.host); // display mysql-config // 省略...
引入以后,能够直接使用配置文件中的配置对象。app
那么在生产环境中,如何使用呢?上面已经介绍了config-lite
基本原理以及用法,在生产环境的时候,咱们只须要在生产机环境中config
目录下新建production.js
文件,而后使用启动命令npm start
便可。
为了不测试环境以及生产坏境配置文件混淆,能够经过.gitignore
文件忽略配置文件,添加以下:
# config config/* !config/default.*
这样,git会忽略除了default.js
以外的配置文件,在本地开发环境中,能够建立多个配置文件测试使用,只需设置对应的环境变量便可。须要注意的是环境变量名需同配置文件名同样。
也许你是一个多系统环境开发者,可能同时在Linux
和windows
环境下开发,因为windows
下设置环境的变量的语法不太同样,因此能够在package.json
启动命令中再加上两句,以下:
"scripts": { "start": "NODE_ENV=production supervisor --harmony -i views/ ./bin/www", "test": "NODE_ENV=test supervisor --harmony -i views/ ./bin/www", "winStart": "SET NODE_ENV=production&&supervisor --harmony -i views/ ./bin/www", "winTest": "SET NODE_ENV=test&&supervisor --harmony -i views/ ./bin/www" }
这样,若是部署在windows
环境下,在config
目录下新建production.js
配置文件,启动命令npm winStart
;若是部署在Linux
或类Unix
环境下,一样是建立production.js
,启动命令npm start
便可。
更多内容请访问:LP's Blog