process
对象是 node
的全局变量, 提供当前 Node
进程的信息。process.env
属性返回一个对象,包含当前 shell
的所有环境变量
在 webpack
里面,我们常常新建一个环境变量 NODE_ENV
,用来判断所处的是开发环境|生产环境|测试环境
我的问题是,通常大家设置 NODE_ENV
这个变量在哪设置?
1.package.json
文件里可以设置为
"dev": "cross-env NODE_ENV=development webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"build": "cross-env NODE_ENV=production webpack --config build/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
是读取的哪个文件 ?
首先楼主明白的,
process.env
是Node
环境的定义的变量,浏览器环境肯定是返回undefined
的。1,首先怎样让
Node
去识别当前运行的是哪个变量,是“development”
还是“production”
,这个是通过cross-env
来定义的。它是一个跨平台的(windows
ormaxos
orliunx
),识别当前运行的环境变量的工具。当然去查看下它的文档说明,更直观。2,怎样让浏览器去识别当前运行的环境变量呢?其实
webpack
有个插件,就是webpack.DefinePlugin
所以浏览器才会认识
process.env.NODE_ENV
如有帮助,麻烦点击下采纳,谢谢~