javascript - nodejs如何更好的覆盖默认配置
天蓬老师
天蓬老师 2017-04-11 09:03:21
[JavaScript讨论组]

背景:
NodeJS在写服务端程序的时候,我写了一套默认的配置文件和项目配置文件,如下:

// 目录结构

// 基础配置文件
/base/config/config1.js
/base/config/config2.js
/base/config/config3.js

// 项目配置文件
/subapp/config/config1.js
/subapp/config/config2.js

逻辑:
当项目配置文件存在的时候,项目文件和跟进文件名覆盖基础配置文件。
/subapp/config/config1.js 会覆盖掉 /base/config/config1.js
/subapp/config/config2.js 会覆盖掉 /base/config/config2.js
/subapp/config/config3.js 没有,则不会覆盖掉 /base/config/config3.js

最终项目使用的配置文件是:
/subapp/config/config1.js
/subapp/config/config2.js
/base/config/config3.js

问题:
webpack打包的时候,会出现错误,因为我覆盖文件的方式是用fs.existsSync()先判断/subapp/config/xxx.js是否存在,存在则require并覆盖掉,所以这个require是在运行过程中执行的,打包时候不会把/subapp/config/. 打包进来,导致运行时候报错。

  1. webpack是否可以增加默写配置,解决这个问题。

  2. 你是否有更好的办法,解决覆盖默认配置。

  3. 你是否有更好的解决方案来支持默认配置文件与自定义配置文件并存。

备注:
不是用 process.env.NODE_ENV 这个东西解决,因为它解决的是环境的差异配置,我需要的是默认配置和自定义配置的方案。

谢谢。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
巴扎黑

webpack编译你可能要添加 target属性,webapck默认编译出来是给浏览器使用的,

题主应该是想把配置文件中的导出的对象给合并了,如果是的话,推荐使用Object.assign,比如Object.assign(a,b,c),函数会按照 c==> b ==> a的顺序把他们的相同的属性一一覆盖。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号