node中的环境变量process.env以及在项目中的使用

5,147 阅读2分钟

process.env

process 对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程。作为一个对象,它对于 Node.js 应用程序始终是可用的,故无需使用 require()。

process(进程)其实就是存在nodejs中的一个全局变量。

process.env属性返回一个包含用户环境信息的对象。

配置环境变量

(1)、Windows配置

临时配置

#node中常用的到的环境变量是NODE_ENV,首先查看是否存在 
set NODE_ENV 

#如果不存在则添加环境变量 
set NODE_ENV=production 

#环境变量追加值 set 变量名=%变量名%;变量内容 
set path=%path%;C:\web;C:\Tools 

#某些时候需要删除环境变量 
set NODE_ENV=

永久配置

右键(此电脑) -> 属性(R) -> 高级系统设置 -> 环境变量(N)...

(2)、Linux配置 临时 #node中常用的到的环境变量是NODE_ENV,首先查看是否存在 echo $NODE_ENV

#如果不存在则添加环境变量
export NODE_ENV=production

#环境变量追加值
export path=$path:/home/download:/usr/local/

#某些时候需要删除环境变量
unset NODE_ENV

#某些时候需要显示所有的环境变量
env

用 npm模块cross-env可以一行命令在各个平台配置

process-env

安装

npm install --save-dev cross-env

使用 在npm脚本中使用

{
  "scripts": {
    "build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
  }
}

设置以后可以在webpack脚本中使用process.env.NODE_ENV

var env
if (process.env.NODE_ENV === "testing") {
  env = require('../config/test.env')
} else if (process.env.NODE_ENV === "uat") {
  env = require('../config/uat.env')
} else if (process.env.NODE_ENV === "production") {
  env = require('../config/prod.env')
} else if (process.env.NODE_ENV === "develop") {
  env = require('../config/develop.env')
}

webpack.DefinePlugin设置全局常量

DefinePlugin 允许创建一个在编译时可以配置的全局常量。这可能会对开发模式和发布模式的构建允许不同的行为非常有用。如果在开发构建中,而不在发布构建中执行日志记录,则可以使用全局常量来决定是否记录日志。这就是 DefinePlugin 的用处,设置它,就可以忘记开发和发布构建的规则。

 plugins: [
    new webpack.DefinePlugin({
      'process.env': env
    })
    ]

全局常量的使用

项目内文件中使用 .js/.vue

const API_HOST = process.env.AUTOTEST_HOST