Web应用开发框架-egg(三)02-基础功能——运行环境 & Config配置之多环境配置、配置写法、配置加载顺序、合并规则、配置结果
运行环境
EGG_SERVER_ENV=prod npm start
获取运行环境:
框架提供了变量 app.config.env
来表示应用当前的运行环境。
很多 Node.js 应用会使用
NODE_ENV
来区分运行环境,但EGG_SERVER_ENV
区分得更加精细。一般的项目开发流程包括本地开发环境、测试环境、生产环境等
框架默认支持的运行环境及映射关系(如果未指定 EGG_SERVER_ENV
会根据 NODE_ENV
来匹配)
例如,当 NODE_ENV
为 production
而 EGG_SERVER_ENV
未指定时,框架会将 EGG_SERVER_ENV
设置成 prod
。
比如,要为开发流程增加集成测试环境 SIT。将
EGG_SERVER_ENV
设置成sit
(并建议设置NODE_ENV = production
),启动时会加载config/config.sit.js
,运行环境变量app.config.env
会被设置成sit
。
Config配置
框架提供了强大且可扩展的配置功能,可以自动合并应用、插件、框架的配置,按顺序覆盖,且可以根据环境维护不同的配置。合并后的配置可直接从 app.config
获取。
多环境配置
框架支持根据环境来加载配置,定义多个环境的配置文件。
config |- config.default.js |- config.prod.js |- config.unittest.js `- config.local.js
config.default.js
为默认的配置文件,所有环境都会加载这个配置文件,一般也会作为开发环境的默认配置文件。
当指定 env 时会同时加载对应的配置文件,并覆盖默认配置文件的同名配置。如 prod
环境会加载 config.prod.js
和 config.default.js
文件,config.prod.js
会覆盖 config.default.js
的同名配置。
配置写法
配置文件返回的是一个 object 对象,可以覆盖框架的一些配置,应用也可以将自己业务的配置放到这里方便管理。
// 配置 logger 文件的目录,logger 默认配置由框架提供 module.exports = {
logger: {
dir: '/home/admin/logs/demoapp', }, };
配置文件也可以简化的写成 exports.key = value
形式
exports.keys = 'my-cookie-secret-key'; exports.logger = {
level: 'DEBUG', };
配置文件也可以返回一个 function,可以接受 appInfo 参数
// 将 logger 目录放到代码目录下 const path = require('path'); module.exports = appInfo => {
return {
logger: {
dir: path.join(appInfo.baseDir, 'logs'), }, }; };
内置的 appInfo 有:
appInfo.root
是一个优雅的适配,比如在服务器环境我们会使用 /home/admin/logs
作为日志目录,而本地开发时又不想污染用户目录,这样的适配就很好解决这个问题。
配置加载顺序
应用、插件、框架都可以定义这些配置,而且目录结构都是一致的,但存在优先级(应用 > 框架 > 插件),相对于此运行环境的优先级会更高。
比如在 prod 环境加载一个配置的加载顺序如下,后加载的会覆盖前面的同名配置。
-> 插件 config.default.js -> 框架 config.default.js -> 应用 config.default.js -> 插件 config.prod.js -> 框架 config.prod.js -> 应用 config.prod.js
合并规则
const a = {
arr: [ 1, 2 ], }; const b = {
arr: [ 3 ], }; extend(true, a, b); // [3]
配置结果
框架在启动时会把合并后的最终配置 dump 到 run/application_config.json
(worker 进程)和 run/agent_config.json
(agent 进程)中,可以用来分析问题。
配置文件中会隐藏一些字段,主要包括两类:
- 如密码、密钥等安全字段。
- 如函数、Buffer 等类型,
JSON.stringify
后的内容特别大
还会生成 run/application_config_meta.json
(worker 进程)和 run/agent_config_meta.json
(agent 进程)文件,用来排查属性的来源,如:
{
"logger": {
"dir": "/path/to/config/config.default.js" } }
到此这篇Web应用开发框架-egg(三)02-基础功能——运行环境 & Config配置之多环境配置、配置写法、配置加载顺序、合并规则、配置结果的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/yd-ios/10740.html