Electron官方未提供判断当前程序运行环境的方法。我认为官方不提供这个方法也是说的过去的,因为Electron扮演的是应用开发框架的角色,而运行环境这些东西本身属于开发者自己的事情,有的开发者喜欢定义“开发、测试、预生产、生成”四个环境,而有的开发者却只定义了一个生产环境,这些都不是框架需要参与的事情。
本文提供了几个定义和判断程序运行环境的方法,开发者可以根据实际情况选取相应的方法。
1. app.isPackaged
Electron官方提供了app.isPackaged
属性来判断应用是否是经过打包的。
app.isPackaged 的原理是判断进程名称是否为 electron 或 electron.exe,如果名称匹配(不区分大小写)则是打包环境。
通常将打包环境当作生产环境,但这并不是强制性的规则。
我们也可以自己通过代码实现判断程序进程名:
1 | function isProduction() { |
2. 根据命令行参数判断
通过在不同环境中为程序添加不同的启动参数,然后在运行时校验这些命令行参数来判断当前的运行环境。
在生产环境中不添加任何启动参数,因此没有启动参数的就为生产环境;如果有启动参数,再根据参数判断是否为测试或预发布等环境。
值得注意的是不同的环境添加启动参数的方式不太一样,比如开发环境不需要打包,可以通过下面方式添加:
1 | electron . --env=development |
而非开发环境往往需要打包,需要在命令行中手动添加,如:
1 | Demo.exe --env=test |
判断方法如下:
1 | function isProduction() { |
3. 通过环境变量判断
这个判断方法与方法2类似,不做过多介绍。需要注意的是,Windows和Unix上添加环境变量的方式略有不同。
Windows:
1 | set APP_ENV=dev && electron . |
Unix:
1 | APP_ENV=dev electron . |
在Electron中通过process.env.APP_ENV
方式就可以获取到APP_ENV
环境变量。