.env文件原理是什么?是如何被解析的?

889 阅读1分钟

.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上