博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
express+gulp构建项目(四)env环境变量
阅读量:5917 次
发布时间:2019-06-19

本文共 3168 字,大约阅读时间需要 10 分钟。

这里的文件的作用是负责设置env环境变量和日志。

index.js

try {    require('dotenv').load({silent: true});    //dotenv从一个.env文件中读取环境变量到process.env中    //process.env会返回一个所有环境变量的对象} catch (error) {    console.log('没有.env文件,将会从 process.env 中读取');}var extend = require('util')._extend;//util._extend(target, source)此方法不稳定,请使用Object.assign()代替//Object.assign() 方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。var config = {};var env = process.env.NODE_ENV;if (!(/^(dev)|(prod)|(test)|(staging)$/).test(env)) {    console.log('请先设置当前项目的运行环境 ' +        '\n dev(开发) 或者 prod(生产) 或者 test(跑单元测试) 或者 staging(测试环境/仿真环境)' +        '\n 设置方式可为设置环境变量 NODE_ENV=环境名称,或者在项目根目录下新建一个 .env 文件 在里面写上一行代码 NODE_ENV=环境名称' +        '\n 格式(环境变量名称=值【没有引号】),比如 NODE_ENV=dev ');    process.exit(1); //process.exit(code)尽可能快的停止node服务}switch (env) { //根据环境,将base基础环境变量导入相应文件中    case 'dev':        config = extend(require('./env/dev'), require('./env/base'));        break;    case 'test':        config = extend(require('./env/test'), require('./env/base'));        break;    case 'prod':        config = extend(require('./env/prod'), require('./env/base'));        break;    case 'staging':        config = extend(require('./env/staging'), require('./env/base'));        break;}var reWrittenEnv = function (config) { //将env对象变成字符串存入envList数组    var envList = [];    for (var o in config) {        envList[envList.length] =  o + '=' + config[o] + '\n';    }};if (env !== 'test') {    reWrittenEnv(config);}for (var o in config) { //将env存入global和process.env中    global[o] = config[o]; //global是node中的全局变量    process.env[o] = config[o];}exports.staus = true;

log4js.js

var log4js = require('log4js'); //日志var logParams = {    replaceConsole: false}; //是否取代console.logif (global.LOG_PRINT == 1) { //appender中配置两个输出,一个输出info日志,一个输出error日志    logParams.appenders = [        {            type: 'dateFile', //文件类型            absolute: true, //文件名路径是否绝对            filename: 'log/info.log', //文件名            maxLogSize: 1024 * 1024, //单文件最大,若设置了模式符,则单文件最大失效            pattern: '-yyyy-MM-dd', //模式符,日期            alwaysIncludePattern: true, //总是添加模式符            category: 'info' //设置一个类型,和log4js.getLogger('category')里的类型相对应        },        {            type: 'dateFile',            absolute: true,            filename: 'log/error.log',            maxLogSize: 1024 * 1024,            pattern: '-yyyy-MM-dd',            alwaysIncludePattern: true,            category: 'error'        }    ];} else {    logParams.appenders = [        { type: 'console' } //控制台    ]}log4js.configure(logParams);var logInfo = log4js.getLogger('info');var logError = log4js.getLogger('error');module.exports = {    logInfo: logInfo,    logError: logError};

base.js

base.js、dev.js、prod.js、staging.js、test.js分别是不同环境下必须的环境变量,写法都一样。

var env = require('../../tool');module.exports = {    PORT: env.port('PORT', 3000), //端口    NODE_ENV: env.name('NODE_ENV'), //环境    STATIC_DIR: env.string('STATIC_DIR', 'public'), //静态文件路径    STATIC_URL: env.staticUrl('STATIC_URL', ''),    STATIC_FILES_OUTPUT: env.string('STATIC_FILES_OUTPUT', 'assets'), //静态文件输出地址    SITE_TITLE: env.string('SITE_TITLE', 'crazyxia'), //网站title};

 

转载于:https://www.cnblogs.com/hahazexia/p/6213273.html

你可能感兴趣的文章
Swift 懒加载
查看>>
oracle库存模块考试,Oracle财务管理系统培训手册-库存模块INV[推荐]
查看>>
linux驱动反编译,linux驱动系列之程序反汇编
查看>>
linux配置静态路由端口,Linux配置静态路由的2种方案
查看>>
root格式化linux,Linux-格式化与检验-mkfs
查看>>
cmake arm linux gcc,arm-linux-gnueabihf-gcc交叉编译MQTT C Client-Go语言中文社区
查看>>
linux密码锁定策略配置文件,Linux账户锁定策略
查看>>
c语言哪些变量不要加锁,[转]关于ReentrantLock中线程读某个变量是否需要加锁
查看>>
华为推出海思和鸿蒙的原因,华为又传好消息!继鸿蒙海思后,又一秘密芯片面世强势破局!...
查看>>
求一份考C语言的试题,c语言考版试题库及答案1.doc
查看>>
android.net.http jar包,HttpResponseCache
查看>>
signature=7d54eb96b838edd7b2680ad739996d87,draft-hoehrmann-urlencoded-00
查看>>
android 心跳长链接,Android socket通讯的长链接与心跳检测
查看>>
vue实例没有挂载到html上,【Vue】多个实例不能同时挂载一个element的原理是什么?...
查看>>
Windows Azure Pack集成AD联合身份认证
查看>>
百度百万美金大奖彰显“小团队做大事业”价值
查看>>
LightSwitch 中的验证
查看>>
消息队列的使用场景
查看>>
引入间接隔离变化(三)
查看>>
VMworld 2011第三天小记
查看>>