【若川视野 x 源码共读】第22期 | 项目中常用的 .env 文件原理是什么?如何实现?

178 阅读1分钟

本文参加了由公众号@若川视野 发起的每周源码共读活动, 点击了解详情一起参与。

dotenv 可将 .env 文件中的环境变量加载到 process.env 中。那么它是如何做到的呢?通过学习dotenv的源码我们便可知晓。

学习内容和参考资料

川哥文章:juejin.cn/post/704505…

川哥代码: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文件中设置的变量?

参考资料:

【1】blog.csdn.net/pdd11997110…

【2】nodejs.cn/api-v16/pro…

【3】blog.csdn.net/sxy70524241…