Skip to content

S16-00 专题-插件-dotenv

[TOC]

索引

  • dotenv.config({path?,encoding?,debug?,override?}),加载 .env 文件,并将其中的键值对加入到 process.env 中。
  • dotenv.parse(contents),用于手动解析 .env 文件的内容。

基础

dotenv: 作用是将 .env 文件中的键值对加载到 process.env 中。通过这种方式,应用程序可以根据环境的不同(开发、测试、生产等)来动态加载不同的配置。

安装:

sh
pnpm i dotenv

▸ 基本使用

1、配置.env.env.production.env.development文件

yaml
# URL前缀
VITE_PREFIX_URL = '/cms2403/'

# API
VITE_BASE_URL = 'http://codercba.com:5000'
VITE_TIME_OUT = 10000

2、在代码中使用

  • 在node中使用

    js
    // 1. 在应用的最上方加载 dotenv
    require('dotenv').config();
    
    // 2. 现在可以通过 process.env 来访问环境变量
    const baseUrl = process.env.VITE_BASE_URL;
    const timeout = process.env.VITE_TIME_OUT;
  • vite.config.ts中使用

    ts
    import dotenv from 'dotenv'
    
    export default ({ mode }: any) => {
      // 1. 加载 dotenv 到 process.env 中
      dotenv.config({ path: `.env.${mode}` })
    
      return defineConfig({
        // 2. 通过 process.env 访问加载的常量
        base: process.env.VITE_PREFIX_URL,
      })
    }

▸ 应用:

API

基本方法

config()

dotenv.config()({path?,encoding?,debug?,override?}),加载 .env 文件,并将其中的键值对加入到 process.env 中。

  • path?string默认:'/.env',指定 .env 文件的路径。

  • encoding?utf8 | gbk | ...默认:utf8,指定文件的编码格式。

  • debug?boolean默认:false,启用调试信息输出,帮助诊断加载过程中可能出现的问题。

  • override?boolean默认:false,是否覆盖已存在的环境变量。

  • 返回:

  • result{error, parsed},返回一个包含两个主要属性的对象。

    • errorError | null,加载 .env 文件出错时的值。加载成功时为null。
    • parsed{key: value,...} | null,包含从 .env 文件中解析出的环境变量,格式为键值对对象。加载出错时为null。
  • js
    // 环境变量
    
    DB_HOST=localhost
    DB_PORT=5432
    DB_USER=myuser
    DB_PASS=mypassword
  • js
    // 1. 默认环境变量文件路径 .env
    
    const result = require('dotenv').config();
    
    if (result.error) {
      console.error('Error:', result.error);
    } else {
      // 通过result.parsed访问获取的环境变量 
      console.log(result.parsed);
    }
  • js
    // 2. 自定义环境变量文件路径 ./config/.env
    
    const result = require('dotenv').config({ path: './config/.env' });
    
    if (result.error) {
      console.error('Error loading .env:', result.error);
    } else {
      // 通过process.env访问获取的环境变量 
      console.log(process.env); 
    }

parse()

dotenv.parse()(contents),用于手动解析 .env 文件的内容。

  • contentsstring,要解析的字符串内容,通常是 .env 文件的内容。需符合 .env 文件格式。

  • 对比config(): parse()不会自动加载 .env 文件,而是直接解析传入的字符串。

  • 返回:

  • parsed{key: value,...},返回一个包含.env文件中每个键值对的解析结果的对象。

  • js
    // 环境变量
    
    DB_HOST=localhost
    DB_PORT=5432
    DB_USER=myuser
    DB_PASS=mypassword
    # This is a comment
  • js
    // 1. 基本使用
    
    const dotenv = require('dotenv');
    
    const envContent = `
    DB_HOST=localhost
    DB_PORT=5432
    DB_USER=myuser
    DB_PASS=mypassword
    # This is a comment
    `;
    
    const parsed = dotenv.parse(envContent);
    
    console.log(parsed);