Vue.js 中使用 `process.env.NODE_ENV` 和环境变量

823 阅读3分钟

在前端开发中,尤其是在使用 Vue.js 构建项目时,管理不同环境下的配置是一个重要的任务。Vue.js 提供了多种方式来配置和使用环境变量,其中最常用的是通过 process.env 对象来访问这些变量。本文将详细介绍如何在 Vue.js 项目中使用 process.env.NODE_ENV 和其他环境变量。

1. process.env.NODE_ENV 概述

process.env.NODE_ENV 是 Node.js 中的一个环境变量,用于标识当前的运行环境(如开发、测试、生产)。在 Vue.js 项目中,这个变量通常用于区分不同的构建模式,以便根据不同的环境执行不同的代码。

2. 配置环境变量

在 Vue.js 项目中,可以通过创建不同的 .env 文件来配置环境变量。这些文件通常位于项目的根目录下,并且遵循一定的命名规则:

  • .env:全局配置文件,所有模式都会加载。
  • .env.local:全局配置文件,所有模式都会加载,但不会被 git 忽略。
  • .env.[mode]:特定模式下的配置文件,例如 .env.development.env.production 等。

例如,可以创建以下文件来配置不同环境下的变量:

# .env.development
NODE_ENV=development
VUE_APP_API_URL=http://dev.api.example.com

# .env.production
NODE_ENV=production
VUE_APP_API_URL=http://prod.api.example.com

3. 使用环境变量

在 Vue.js 项目中,可以通过 process.env 对象来访问这些环境变量。例如,在 main.js 或组件中可以打印当前的环境变量:

console.log(process.env.NODE_ENV); // 输出当前的环境模式(如 development 或 production)
console.log(process.env.VUE_APP_API_URL); // 输出 API 的 URL

运行

需要注意的是,只有以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态地嵌入到客户端代码中。因此,自定义的环境变量必须以 VUE_APP_ 开头。

4. 在 package.json 中定义脚本命令

为了方便切换不同的环境模式,可以在 package.json 中定义用于管理和运行项目的脚本命令。例如:

{
  "scripts": {
    "serve": "vue-cli-service serve --mode development", 
    "serve:test": "vue-cli-service serve --mode test",
    "build:dev": "vue-cli-service build --mode development",
    "build:test": "vue-cli-service build --mode test", 
    "build:prod": "vue-cli-service build --mode production"
  }
}

通过这些脚本命令,可以方便地启动或构建不同环境下的项目。

5. 示例:多环境配置

假设我们有一个 Vue.js 项目,需要配置开发、测试和生产环境。可以按照以下步骤进行配置:

  1. 创建 .env.development 文件:
    NODE_ENV=development
    VUE_APP_API_URL=http://dev.api.example.com 
  1. 创建 .env.test 文件:
    NODE_ENV=test
    VUE_APP_API_URL=http://test.api.example.com 
  1. 创建 .env.production 文件:
    NODE_ENV=production
    VUE_APP_API_URL=http://prod.api.example.com 
  1. 在 package.json 中定义脚本命令:
    {
      "scripts": {
        "serve": "vue-cli-service serve --mode development", 
        "serve:test": "vue-cli-service serve --mode test",
        "build:dev": "vue-cli-service build --mode development",
        "build:test": "vue-cli-service build --mode test", 
        "build:prod": "vue-cli-service build --mode production"
      }
    }
  1. 在代码中使用环境变量:
    console.log(process.env.NODE_ENV); // 输出当前的环境模式
    console.log(process.env.VUE_APP_API_URL); // 输出 API 的 URL

通过以上步骤,可以轻松地在 Vue.js 项目中管理不同环境下的配置。

6. 注意事项

  • 安全性:避免将敏感信息(如 API 密钥)直接存储在代码仓库中。可以使用 .env.local 文件来存储这些敏感信息,并将其添加到 .gitignore 文件中。
  • 灵活性:通过使用环境变量,可以灵活地管理不同环境下的配置,而无需修改代码。
  • 配置管理:确保每个环境文件只包含环境变量的“键=值”对,并且只有特定的变量会被嵌入到客户端代码中。