process.env它是什么?process.env 是父线程的环境变量的副本,除非另有说明。 对一个副本的更改在其他线程中不可见,对本机附加组件不可见(除非 worker.SHARE_ENV 作为 env 选项传递给 Worker 构造函数),如下:
(图片来自:https://nodejs.org/api/worker_threads.html)
(图片来自:http://nodejs.cn/api/worker_threads.html#worker_threads_new_worker_filename_options)
(图片来自:https://nodejs.org/dist/latest-v14.x/docs/api/process.html#process_process_env)
(图片来自:https://cn.vuejs.org/v2/guide/installation.html#%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83-vs-%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E6%A8%A1%E5%BC%8F)
DefinePlugin在编译时用其他值或表达式替换代码中的变量,如下:
(图片来自:https://webpack.js.org/plugins/define-plugin/)
这里的其他值,在项目中可以为引入的env文件。比如:
newwebpack.DefinePlugin({'process.env':require('../config/dev.env')}),
这样全局变量写在config下的env下的时候,就可以在编译时将配置的对应process.env替换为require的dev.env的表达式。dev.env、ci.env、prod.env这种类似的文件,就可以成为不同环境下的全局配置文件,避免一些全局变量在项目中定义的到处都是。