dotenv是一个不依赖任何模块的环境变量加载器,它从.env
文件中加载变量到process.env.
上这样就可以将项目的代码和环境配置分开存储。这是基于The Twelve-Factor App 理论实现的。
软件通常会作为一种服务来交付,即软件即服务(SaaS Software as a Service)。12-Factor原则为构建SaaS应用提供了以下的方法论:The Twelve-Factor App
安装
npm install dotenv --save
使用
在项目根目录创建.env
S3_BUCKET="YOURS3BUCKET"
SECRET_KEY="YOURSECRETKEYGOESHERE"
然后在你的应用中尽早使用如下代码加载配置
require('dotenv').config()
console.log(process.env) // remove this after you've confirmed it is working
// 或者
import * as dotenv from 'dotenv' // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import
dotenv.config()
预加载
可以在启动应用的时候,使用如下命令,这样在你的代码中就不需要显式加载了。
$ node -r dotenv/config your_script.js
也可以通过下面的方式提供配置
$ node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/.env dotenv_config_debug=true
$ DOTENV_CONFIG_<OPTION>=value node -r dotenv/config your_script.js
其他
不错的实践
dotenv-webpack
.env # 所有情况下都会加载
.env.local # 所有情况下都会加载,但会被 git 忽略 -------- 自己修改.gitignore
.env.[mode] # 只在指定模式下加载
.env.[mode].local # 只在指定模式下加载,但会被 git 忽略
或者只是用.env 文件,在执行的时候在命令中指定配置文件