“NODE_ENV”相关的几个技术点

本文介绍了Node.js中的全局环境变量`process.env`,特别是`NODE_ENV`的使用,以及如何在Windows、Linux环境中设置它。在前端工程化中,`NODE_ENV`常用于区分开发和生产环境。此外,通过Webpack的`DefinePlugin`,可以设置全局变量来根据环境进行不同的配置。在Webpack打包过程中,利用`process.env.NODE_ENV`可以判断当前环境并进行相应处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 概念 - node下的全局环境process.env

node中有全局变量process表示当前node进程,process.env包含着关于系统环境的信息。但是process.env中并不存在NODE_ENV这个东西。其实NODE_ENV只是一个用户自定义的变量,但是这个NODE_ENV变量语义非常恰当,并且在前端工程化配置中作为判断生产环境/开发环境的依据是非常自然而方便的事情,因而在前端工程化中逐渐成为一个事实规范。当我们在服务启动时配置NODE_ENV,或在代码中给process.env.NODE_ENV赋值,js便能通过process.env.NODE_ENV获取信息。

二. node运行环境下的设置与使用

1. 临时设置 - 在cmd下的node环境下

window: set NODE_ENV=production
linux:  export NODE_ENV=production

2. 永久设置

window:右键(此电脑) -> 属性(R) -> 高级系统设置 -> 环境变量(N)...
linux:      vim /etc/profile

3. 常用脚本设置 - 将NODE_ENV=XXXX放到项目package.json的scripts命令中

"scripts": {
    "build-win": "SET NODE_ENV=production && webpack --config build/webpack.config.js",
    "build-linux": "EXPORT  NODE_ENV=production && webpack --config build/webpack.config.js",
   "build-mac": "NODE_ENV=production node build/dev-server.js"
  }

4. 常用脚本设置 - 跨平台方案,第三方插件cross-env

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

使用:

console.log(process.env.NODE_ENV)

三. webpack打包环境下的设置与使用

DefinePlugin允许我们创建全局变量,可以在编译时进行设置,因此我们可以使用该属性来设置全局变量来区分开发环境和正式环境。这就是 DefinePlugin的基本功能。

因此我们可以在webpack.config.js 中添加如下代码配置全局变量信息了,因为当webpack进行编译的时候会全局设置变量;如下代码:

module.exports = {
  plugins: [
    // 设置环境变量信息
    new webpack.DefinePlugin({
      AA: 'aa',
      BB: 'bb',
      'process.env': {
        NODE_ENV: JSON.stringify(process.env.NODE_ENV)
      }
    })
  ]
}

这样使用时就与node运行环境下一样了:

console.log(process.env.NODE_ENV)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值