.env文件是什么
.env文件是全局默认配置文件,可以存储不同环境下的变量,不论什么环境下都会加载合并
.env.development是开发环境下的配置文件,仅在开发环境加载
.env.production是生产环境下的配置文件,仅在生产环境加载。
了解了.env文件后,再来看dotenv
Dotenv是一个零依赖模块,可将.env文件中的环境变量加载到process.env中。
dotenv是如何解析.env文件的
关键代码
const fs = require('fs')
const path = require('path')
function parse(src) {
const obj = {}
src.toString().split('\n').forEach(line => {
const keyValueArr = line.split('=')
key = keyValueArr[0]
val = keyValueArr[1] || ''
obj[key] = val
})
return obj
}
function config() {
let dotenvPath = path.resolve(process.cwd(), '.env')
const parsed = parse(fs.readFileSync(dotenvPath, 'utf-8'))
Object.keys(parsed).forEach(key => {
if (!Object.prototype.hasOwnProperty.call(process.env, key)) {
process.env[key] = parsed[key]
}
})
return parsed
}
主体流程是通过读取node执行下的.env文件,在用 fs.readFileSync 读取 .env 文件,通过parse函数将文件解析为键值对形式的对象,最终赋值到process.env上