背景:
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/. 打包进来,导致运行时候报错。
webpack是否可以增加默写配置,解决这个问题。
你是否有更好的办法,解决覆盖默认配置。
你是否有更好的解决方案来支持默认配置文件与自定义配置文件并存。
备注:
不是用 process.env.NODE_ENV
这个东西解决,因为它解决的是环境的差异配置,我需要的是默认配置和自定义配置的方案。
谢谢。
webpack编译你可能要添加

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