electron区分调试模式和生产模式

本文转载自:https://newsn.net/

electron程序,如何区分是调试模式还是生产模式?这是很多新人会疑惑的问题。苏南大叔的本篇文章,也是从苏南大叔自身的经验角度,来说说这个问题,仅供参考,仅供参考,仅供参考。

electron程序,如何区分是调试模式还是生产模式?

本文测试环境:mac。话说,阴阳本为一体,然混沌初开,一分为二,一为阴,一为阳。开发模式或者生产模式,就是一念之间的事情。何必定义的那么清楚,难道生产模式下的程序就不能调试了么?不是。难道开发模式的程序,发布就会发生重大问题么?恐怕也不是的。所以,各位少年,心中有佛所见皆佛,大家淡定淡定。

process.env环境变量(常见)

通过给electron程序添加特殊的启动参数,也就是process.env来区分是否为dev模式,这个是最常见的方式,也是大多数人采用的方式。比如在electron-vue中,就大量使用了这种方案。可以参考下面这篇文章:

代码范例是这样的:

if (process.env.NODE_ENV !== 'production') {

//debug

}

如何传递参数?(敲黑板重点)

关于这个方案,最常见的新人问题就是:“如何传入env参数?”。一般来说,就是在命令行下面附加参数传递的。比如:

[1] 通用方案:利用cross-env传递参数:

newsn.net:这里是【评论】可见内容

[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

回到顶部