electron区分调试模式和生产模式
本文转载自:https://newsn.net/
electron程序,如何区分是调试模式还是生产模式?这是很多新人会疑惑的问题。苏南大叔的本篇文章,也是从苏南大叔自身的经验角度,来说说这个问题,仅供参考,仅供参考,仅供参考。
本文测试环境:mac
。话说,阴阳本为一体,然混沌初开,一分为二,一为阴,一为阳。开发模式或者生产模式,就是一念之间的事情。何必定义的那么清楚,难道生产模式下的程序就不能调试了么?不是。难道开发模式的程序,发布就会发生重大问题么?恐怕也不是的。所以,各位少年,心中有佛所见皆佛,大家淡定淡定。
process.env
环境变量(常见)
通过给electron
程序添加特殊的启动参数,也就是process.env
来区分是否为dev
模式,这个是最常见的方式,也是大多数人采用的方式。比如在electron-vue
中,就大量使用了这种方案。可以参考下面这篇文章:
代码范例是这样的:
if (process.env.NODE_ENV !== 'production') {//debug
}
如何传递参数?(敲黑板重点)
关于这个方案,最常见的新人问题就是:“如何传入env参数?”。一般来说,就是在命令行下面附加参数传递的。比如:
[1] 通用方案:利用cross-env
传递参数:
[2] 或者win
下专用命令:
set NODE_ENV=production && electron .
[3] 或者mac
下专用命令:
NODE_ENV=production electron .
export NODE_ENV=production && electron .
[4] 甚至可以在.js
文件里面直接写代码:
process.env.NODE_ENV = 'production'
凡事都没有那么绝对,如果你给最终的生产模式的成品传递一个dev
参数标识的话,对于程序来说,又回归到了生产模式逻辑。
app.asar
字符判断(可选)
这个方案下,是不是生产模式,其实是以app.asar
这个特殊文件是否存在作为主要标准的。这一条是苏南大叔自己总结的,具体可以参见下面这篇文字:
判断标准是:
if (__dirname.split(path.sep).indexOf("app.asar")>=0){//production
}
凡事都没有那么绝对,如果一个生产模式的electron
程序,在打包的时候,主动关闭了asar
参数,那么,这个生产模式的程序,也将被视为调试模式。
app.packed
变量判断(推荐)
这个是electron
官方提供的方案,但是貌似知道的人很少。这个变量的标准就是:是不是打包了。打包的标准不是asar
,而是真正意义上的生成可执行文件。
if (!app.isPackaged) {//production
}
结束语
是不是生产模式,就是为了方便程序逻辑判断嘛。所以,如果您思路足够清晰,用什么样的变量或方案,来判断当前是不是调试模式,也不是很难的事情,对吧?
以上是 electron区分调试模式和生产模式 的全部内容, 来源链接: utcz.com/a/118576.html