Читать.env файл и преобразовывать все строки в объект

Я пытаюсь прочитать файл .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 ответ

String.replace является основным средством простого анализа:

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

Чтобы преобразовать числовые значения, такие как 8080 в Numbers,

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

licensed under cc by-sa 3.0 with attribution.