dotenv-local-first: 项目环境管理

在一些个人项目中经常使用的环境变量管理方式,与Vite等常用的不同,这个是 local 文件有最高优先级的

01 安装依赖

yarn add --dev dotenv @jswork/dotenv-local-first

02 示例配置

{
  "scripts": {
    "start:dev": "NODE_ENV=development envlf app.js",
    "start:beta": "NODE_ENV=beta envlf app.js"
  },
  "devDependencies": {
    "@jswork/dotenv-local-first": "^1.0.0",
    "dotenv": "^17.2.1"
  }
}

03 示例 env 文件

文件名内容
.env
# .env

DATABASE_HOST=127.0.0.1
DATABASE_PORT=27017
DATABASE_USER=default_dev
DATABASE_PASS=
DATABASE_NAME=my_app_default
.env.beta
# .env.beta

DATABASE_HOST=127.0.0.1
DATABASE_PORT=27017
DATABASE_USER=default_beta
DATABASE_NAME=my_app_beta
.env.development
# .env.development

DATABASE_HOST=127.0.0.1
DATABASE_PORT=27017
DATABASE_USER=default
DATABASE_NAME=my_app_dev
.env.development.local
# .env.development.local

DATABASE_USER=local-dev-user
DATABASE_PASS=super-dev-secret
.env.local
# .env.local

DATABASE_USER=local-user
DATABASE_PASS=super-secret

04 示例输出

$ NODE_ENV=development envlf --debug src/app.js
[dotenv@17.2.1] injecting env (5) from .env -- tip: 📡 version env with Radar: https://dotenvx.com/radar
[dotenv@17.2.1] injecting env (4) from .env.development -- tip: 🛠️  run anywhere with `dotenvx run -- yourcommand`
[dotenv@17.2.1] injecting env (2) from .env.local -- tip: 🔐 encrypt with Dotenvx: https://dotenvx.com
[dotenv@17.2.1] injecting env (2) from .env.development.local -- tip: ⚙️  suppress all logs with { quiet: true }
process.env.DATABASE_NAME:  my_app_dev
process.env.DATABASE_USER:  local-dev-user
process.env.DATABASE_PORT:  27017
process.env.DATABASE_PASS:  super-dev-secret
✨  Done in 0.96s.
env vite react