我试图读取一个.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,但我不知道如何逐行阅读。或者变量的类型如何?我可以检测它是否是一个字符串或数字(我只是想看看是否只有数字,这意味着它是一个数字?)?
答案 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;
});