背景

webpack配置文件中,使用了process.env.NODE_ENV

使用console.log(process.env.NODE_ENV)输出的值是undefined

process.env

尝试输出process.env,可以看到与node相关的大量运行环境信息,包括package.json中的script信息、node的执行目录等等。猜测,这个变量可能是环境配置的变量。

查找StackFlow [process.env.NODE_ENV is undefined] 。这个是配置给终端的环境变量。可以配置在系统中也可以在执行时候单独设置:

可以通过上面的命令使webpack在不同的环境下打包应用,webpack4和babel内置了处理NODE_ENV的规则,自动适配生产模式和开发模式。

process.env表示node应用在执行对应任务时候,所处的运行环境(各种配置值)。既然是环境变量,也就是说可以直接给node配置,也可以在执行命令时候配置进去。同时这个env对象允许扩展属性,所以在大多场景中,这个对象的属性非常丰富,可参考node的API。比如对于上面的👆示例命令1的运行环境就会存在process.env.NODE_ENV=development

NODE_ENV

回到最初的问题上,这个值为什么未定义。很简单,NODE_ENV这个环境变量并不是所有的运行环境都有默认设置值的。这个名字是后来大家约定俗成的,不是API标准里的内容,所以你设置了才有。同理还有像BABEL_ENV等。

webpack多种配置方式,适应不同打包环境

查阅webpack关于配置文件的文档,「多种配置类型」,在配置文件以函数形式返回时,可以在webpack-cli中添加各种自定义参数。

0 0 vote
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x