项目打包build针对不同环境,设置环境变量取不同取值。 例如,名字为ELECTRON_NODE_INTEGRATION相同环境变量在development环境,test环境,production环境下分别取值不同。
tips:设置 ELECTRON_NODE_INTEGRATION 目的是为设置渲染器页面是否可以使用node语法
通常的做法在package.json设置如下:
"scripts":{
'electron:serve: ELECTRON_NODE_INTEGRATION=true vue-cli-service electron:serve'
...
}
但是如果变量很多,就不能用上述方法了,考虑把很多变量写到文件中(利用自定义模式需要通过.env文件进行配置),通过运行命令,找到适配文件
.env文件分为以下类型:
.env, 在所有的环境中被载入.env.local, 在所有的环境中被载入,但会被 git 忽略.env.[mode], 只在指定的模式中被载入.env.[mode].local, 只在指定的模式中被载入,但会被 git 忽略
"scripts":{
'electron:serve-development: vue-cli-service electron:serve --mode development',
'electron:serve-test: vue-cli-service electron:serve --mode test',
'electron:serve-producton: vue-cli-service electron:serve --mode producton'
...
}
分别在
项目根目录新建.env.development,.env.test,.env.production文件 配置变量不同取值
例如
.env.development 配置如下
ELECTRON_NODE_INTEGRATION = true
ELECTRON_NODE_CONTEXTISOLATION = false
.env.test 配置如下
ELECTRON_NODE_INTEGRATION = true
ELECTRON_NODE_CONTEXTISOLATION = true
.env.production 配置如下
ELECTRON_NODE_INTEGRATION = false
ELECTRON_NODE_CONTEXTISOLATION = false
上述2种方式,如果是不同平台,可能有不适配的问题,(例如windows 与 mac 环境变量的设置不同)
使用cross-env可以设置在不同的平台上有相同的NODE_ENV参数
在大多数Windows命令行中在使用NODE_ENV = production设置环境变量时会报错。同样,Windows和Linux命令如何设置环境变量也有所不同。
为了解决该问题,cross-env就派上用途了
用法 :
"scripts":{
'electron:serve-development:cross-env vue-cli-service electron:serve --mode development',
'electron:serve-test:cross-env vue-cli-service electron:serve --mode test',
'electron:serve-producton:cross-env vue-cli-service electron:serve --mode producton'
...
}