读取.env文件并将所有行转换为对象

时间:2013-07-21 16:11:11

标签: javascript node.js

我试图读取一个.env文件,Foreman正用于读取启动节点服务器时可能需要的env变量。

我正在使用:

var path = require("path"),
    _ = require("underscore"),
    fs = require("fs"),
    variables = fs.readFileSync(path.resolve(__dirname, ".env"), "utf8");

此时我有一个包含这样的字符串:

NODE_ENV=development
PORT=8080

我想将该字符串转换为对象,以便我可以这样读取它:

{
    NODE_ENV: "development",
    PORT: 8080
}

我不知道怎么做。我在想Regex,但我不知道如何逐行阅读。或者变量的类型如何?我可以检测它是否是一个字符串或数字(我只是想看看是否只有数字,这意味着它是一个数字?)?

1 个答案:

答案 0 :(得分:1)

String.replace是简单解析的主要方法:

var env = {}
variables.replace(/(\w+)=(.+)/g, function($0, $1, $2) { env[$1] = $2 })

8080等数值转换为数字

variables.replace(/(\w+)=((\d+)|.+)/g, function($0, $1, $2, $3) {
    env[$1] = $3 ? Number($3) : $2;
});
相关问题