process对象是node的全局变量,提供当前Node进程的信息。process.env属性返回一个对象,包含当前shell的所有环境变量在webpack里面,我们常常新建一个环境变量NODE_ENV,用来判断所处的是开发环境|生产环境|测试环境我的问题是,通常大家设置NODE_ENV这个变量在哪设置?1.package.json文件里可以设置为"dev":"cross-envNODE_ENV=developmentwebpack-dev-server--inline--progress--configbuild/webpack.dev.conf.js","build":"cross-envNODE_ENV=productionwebpack--configbuild/webpack.prod.conf.js",2.也可以在webpack文件下的配置文件config里面设置module.exports={build:{env:{NODE_ENV:'"production"'}},dev:{env:{NODE_ENV:'"development"'}}}那么在build文件夹下的比如webpack.dev.conf.js文件里(node环境?)读取process.env.NODE_ENV是读取的那个文件定义的NODE_ENV值呢?以及在src下某个文件里(浏览器环境?)读取process.env.NODE_ENV是读取的哪个文件?
2 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
首先楼主明白的,process.env是Node环境的定义的变量,浏览器环境肯定是返回undefined的。1,首先怎样让Node去识别当前运行的是哪个变量,是“development”还是“production”,这个是通过cross-env来定义的。它是一个跨平台的(windowsormaxosorliunx),识别当前运行的环境变量的工具。当然去查看下它的文档说明,更直观。2,怎样让浏览器去识别当前运行的环境变量呢?其实webpack有个插件,就是webpack.DefinePluginnewwebpack.DefinePlugin({//process.env这个就会被浏览器环境所识别'process.env':require('./config/dev.env')}),所以浏览器才会认识process.env.NODE_ENV如有帮助,麻烦点击下采纳,谢谢~
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
阅读webpack4官网文档Mode,里面提到Ifnotset,webpacksetsproductionasthedefaultvalueformode.Thesupportedvaluesformodeare:如果没有设置mode值,默认mode值为"production"。设置process.env.NODE_ENV还能通过mode值读取。测试下来貌似最终读取的是mode的值
添加回答
举报
0/150
提交
取消