对于多种部署环境,往往我们需要编写不同的配置代码,一个经典的解决方案是分别编写与环境相对应的多个配置文件。然后使用别名或者动态加载来获取我们所需要的变量。
编写多个配置文件的过程很简单,但其中有一些注意事项:
-
必须将不同的值分别分配给多个文件中的同一个变量。如果你想同时知道一个变量的所有细节,将会变得很难阅读,如果有更多的环境则更难。
-
由于将配置文件分成了多个文件,我们往往会忘记给其他一些环境的配置文件编写代码。
上述这些对我们来说可能是一场噩梦,但为什么我们不在一个配置文件中声明它们呢?这是因为我们不想将不相关的配置捆绑到一起。
penv.macro
旨在解决上述问题。
penv.macro
将读取你传递给 env()
函数的参数,然后选择相对应的属性,其键值与process.env.NODE_ENV
的值相匹配,并且使用它的值属性来替换整个 env(...)
表达式。
由于这个原因,它现在只支持普通对象,且键值必须是一个字符串,而不是计算表达式。但属性值则可以支持 JavaScript
语法中的任何内容。