一、 简述process.env.NODE_ENV是什么?

process 对象是一个全局变量,提供了有关当前 Node.js 进程的信息并对其进行控制。 作为全局变量,它始终可供 Node.js 应用程序使用,无需使用 require()。 它也可以使用 require() 显式地访问:

const process = require('process');

 

process.env 属性会返回包含用户环境的对象。 参见 environ(7)

此对象的示例如下所示:

{
  TERM: 'xterm-256color',
  SHELL: '/usr/local/bin/bash',
  USER: 'nodejscn',
  PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
  PWD: '/Users/nodejscn',
  EDITOR: 'vim',
  SHLVL: '1',
  HOME: '/Users/nodejscn',
  LOGNAME: 'nodejscn',
  _: '/usr/local/bin/node'
}

 二、项目中经常使用的process.env.NODE_ENV是如何进行配置的?

process.env.NODE_ENV === 'production'

在VUE项目中的package.json 设置

我们这个时候可以在vue的入口文件中打印当前的环境变量

console.log('showenv', process.env.NODE_ENV);

此时控制台的输出是

发现process.env.NODE_ENV已经被作为全局变量打印出来了,因此在项目打包中为了区分开发环境和正式环境我们可以使用这种方法。

关于cross-env

它的作用是啥?
当我们使用DefinePlugin这种方法设置NODE_ENV时,大多数windows命令会提示将会阻塞或者异常,或者windows不支持NODE_ENV=development的这样的设置方式,会报错。因此cross-env出现了。我们可以使用cross-env命令来实现全开发平台的兼容。
要使用该命令的话,我们首先需要在我们的项目中安装该命令:

npm 安装方式

npm install --save-dev cross-env

更多推荐

详解process.env.NODE_ENV