这是「🥬狗变形记」系列更新的第四期(为什么不说第四天呢?因为我又懒病犯了,就拖拖拉拉😳...果然改变坏习惯还是需要坚持),今天接着大家介绍一下我们开发中项目配置用到的一个库——「dotenv」
NPM:www.npmjs.com/package/dot…
GITHUB:github.com/motdotla/do…
这次我们先来看看示例:
看到这个图片是不是有点熟悉,我们常常会在项目里根据环境配置node的环境变量,然后通过process.env.XXX取到然后使用,其实核心就是用dotenv这个库来实现的
文档介绍
dotenv能够从.env文件里面加载环境变量到process.env里面去,通常会区别于业务代码,保存项目相关的配置。
下面的部分我们将从三部分来介绍该库🤔:
- 脚手架中的使用;
- 源码解析;
- 思考总结。
脚手架中的使用
我们搭建项目的时候经常会用到vue-cli这样的脚手架,通常会在项目里看到env文件
在里面我们会配置一些请求相关的参数等项目相关的配置,在本地启动或打包的时候,就会把变量加载到process.env里面去,那如何实现的呢?
对照源码来看⬇️:
其实就是根据环境(development、test、production)解析路径、加载文件、解析环境变量三部分。
源码解析
结合上面调用到的dotenv.config方法,我们可以发现:
dotenv暴露了两个方法—— parse和config
结合源码看里面每一步是怎么实现的(代码里有注释):、
config函数:
****
对照上面的图片,我们可以看到,比较关键的就是parse函数,其作用是解析env里的键值对,填充process.env
parse函数
(注释都在代码里面啦~)
传入的options对象的来源:
- 调用方法传入
require('dotenv').config({ path: '/custom/path/to/.env' })
- process.env
$ DOTENV_CONFIG_<OPTION>=value node -r dotenv/config your_script.js
- preload --require -r(预加载模块依赖,可参考Node文档)
$ node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/.env dotenv_config_debug=true
一些思考:
- 需要更加注重基础知识点的积累掌握,比如正则表达式、字符串处理函数exec,在写工具库的时候才能做到书到用时不恨少;
- 跳出舒适区,自己怕的代码要多看,怕的东西要多学,变勇敢。
🌊总结:
💪持续阅读好的代码库,思考学习好的代码,把自己的成长分享出来。细节决定成败。⛽️GET UP!