@alucarpd86/dotenv-json
Version:
Load environment variables via a JSON file
44 lines (37 loc) • 1.14 kB
JavaScript
const path = require("path");
const fs = require("fs");
const fileWatcher = require('chokidar');
var opts = {
path: ".env.json",
override: false,
watch: false
};
module.exports = function dotenvJSON(options) {
opts = Object.assign(opts, options);
updateConfiguration();
if (opts.watch) {
fileWatcher.watch(path.resolve(process.cwd(), opts.path), {
cwd: __dirname,
awaitWriteFinish: true,
depth: 1
}).on('all', (event, path) => {
updateConfiguration();
});
}
};
function updateConfiguration() {
const jsonString = fs.readFileSync(path.resolve(process.cwd(), opts.path), {
encoding: "utf8"
});
const envConfig = JSON.parse(jsonString);
for (const key in envConfig) {
if (typeof envConfig[key] === "object") {
envConfig[key] = JSON.stringify(envConfig[key]);
}
if (opts.override) {
process.env[key] = envConfig[key];
} else {
process.env[key] = process.env[key] || envConfig[key];
}
}
}