本文参加了由公众号@若川视野 发起的每周源码共读活动, 点击了解详情一起参与。
dotenv 可将 .env 文件中的环境变量加载到 process.env 中。那么它是如何做到的呢?通过学习dotenv的源码我们便可知晓。
学习内容和参考资料
川哥代码:git clone github.com/lxchuan12/d…
主要思想
(1)用 fs.readFileSync 读取 .env 文件
(2)将文件解析为键值对形式的对象
(3)将对象属性和对应的值加到 process.env 上。
关键代码
// 读文件
fs.readFileSync(dotenvPath, { encoding }), { debug })
// 换行分隔,解析为对象形式
const NEWLINE = '\n'
src.toString().split(NEWLINES_MATCH).forEach(//....)
// 加到process.env
Object.keys(parsed).forEach(function (key) {
if (!Object.prototype.hasOwnProperty.call(process.env, key)) {
process.env[key] = parsed[key]
}
})
学完本文,您可以思考如下问题:
1.node中process.env属性的作用是什么?
2.vue开发中, .env文件的作用是什么?
3..env文件中NODE_ENV的作用是什么?都可以有哪些取值?
4.dotenv读取.env文件时使用了node.js的fs模块的哪个api?
5.dotenv如何把.env文件的内容转成对象的形式?
6.为什么通过dotenv的处理最终可以在process.env上获取.env文件中设置的变量?
参考资料: