项目初期搭建时,很多配置都是繁琐的,我们需要在文件之间建立关联。所以在项目中,我们抽象功能,封装成易用的packages,然后在接下来的项目中,做到更快的搭建和更无坚不摧的代码基础。加载配置是一个重要的功能模块。而多数项目有着配置混乱,配置文件和环境变量互相纠缠的现象,noenv就是要同时解决这个问题。
为什么不用node-config?
node-config 洋洋洒洒2000多行代码,加载速度效率奇差,并且强行要求你用其指定的文件夹名或是引入环境变量来改变他的加载过程。使用config或多或少是为了减少环境变量的依赖,让代码变得更可靠,更易拆解,解绑其对环境的依赖。而加载完成之后,node-config还定义了类似MVC年代的Java语法,config.set(‘value’), config.get(‘value’), config.has(‘value’),这是不必要的。一个config文件若是缺乏太多项目,便是不合规的config。没有必要为了简写而去在项目里做判断。
node-config有一个严重bug,它的项目根目录查找基于process.cwd()方法。这个方法,在有umbrella project的情况下,是不能够正确找到项目的根目录,从而不能正确的找到配置文件。你难以想象,2000行代码纵容这样的低级bug。
node-config不支持自动从process.env获取值,但是noenv允许动态从环境变量中得到配置值。这能够使得管理环境变量变得有章法可循,项目只从noenv加载配置,若是你要求环境变量也只能通过noenv来传给应用本身,那么,所使用到的环境变量被列成了一个清晰的列表,环境变量和配置将不再麻烦。
noenv的使用方法极其简单
const config = require('noenv')