我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

electron目标定位是客户端软件,所以,读取程序本身的版本号及名称,这是个刚性需求。除此之外,基于electron的软件作品,也可以读取其内置的nodeelectronchrome的版本号,这些对于程序的辅助debug,也是非常有裨益的。苏南大叔在本文中,主要讲述内容为:如何读取上述内容的版本号。本文涉及的源码的基础代码,来自electronquick-start范例。

苏南大叔:electron 如何读取软件 package.json 中的名称及版本号 - electron-package-json
electron 如何读取软件 package.json 中的名称及版本号(图8-1)

读取框架(electronnodechrome)版本号

大家都知道,electron的背后实际上是nodechrome。所以,我们可以需要读取当前electron的版本号,以及nodechrome的版本号。读取的办法也非常简单,我们利用的electronprocess对象里面的versions对象。

在主进程和渲染进程里面,我们都可以访问process.versions,来获得框架版本信息。

console.log(process.versions);

下面的代码段,来自quick-start项目里面的渲染进程代码。

We are using Node.js <script>document.write(process.versions.node)</script>,
Chromium <script>document.write(process.versions.chrome)</script>,
and Electron <script>document.write(process.versions.electron)</script>.

process.versions里面是很多个组件的版本号合集。大家自己看截图即可。

苏南大叔:electron 如何读取软件 package.json 中的名称及版本号 - process
electron 如何读取软件 package.json 中的名称及版本号(图8-2)

读取软件自身的版本信息

智者千虑,必有一疏。上面的process.versions居然没有软件自身的版本号信息,这个可能是令大家大跌眼镜的。我们来看一下,electronnode)如何读取package.json里面的内容。代码非常简单,可以在主进程和渲染进程里面使用。

var package = require("./package.json");
console.log(package);

然后我们就可以顺利的拿到写在package.json里面的nameversion了,甚至是我们自定义的字段diy

var name = package.name;
var version = package.version;
//var diy=package.diy;

下面用截图演示说明代码效果。我们的package.json文件如下图所示:

苏南大叔:electron 如何读取软件 package.json 中的名称及版本号 - 007
electron 如何读取软件 package.json 中的名称及版本号(图8-3)

在主进程中,使用范例截图如下:

苏南大叔:electron 如何读取软件 package.json 中的名称及版本号 - 008
electron 如何读取软件 package.json 中的名称及版本号(图8-4)

但是在渲染进程里面使用的时候,特别是渲染进程里面有类似jquery之类的js类库加载的时候,这个require方法可能是有问题的。其中之一的方案就是修改require方法名。具体请参照这篇文章:

在下面的截图中,演示的是上面的代码和jquery同时在渲染进程里面出现的情况,请知晓。

苏南大叔:electron 如何读取软件 package.json 中的名称及版本号 - 006
electron 如何读取软件 package.json 中的名称及版本号(图8-5)

苏南大叔:electron 如何读取软件 package.json 中的名称及版本号 - 005
electron 如何读取软件 package.json 中的名称及版本号(图8-6)

适用于加载任何json文件

本方法适用于加载任何json文件,并不单指package.json文件。比如加载一个自定义的文件config.json,并且读出里面的配置项目。那么可以这样做:

var config = require("./config.json");
console.log(config);

苏南大叔:electron 如何读取软件 package.json 中的名称及版本号 - 009
electron 如何读取软件 package.json 中的名称及版本号(图8-7)

额外说明

1:require("./package.json")里面的./,这个值是路径,表示当前同级目录!你懂的。所以,极端情况下,你可以试试path.join。比如:

const path = require('path')
console.log(require(path.join(__dirname, 'package.json')));

2:打包之后,根目录下面没有这个package.json,那是因为放到asar里面去了。对不?你懂的。所以还是能访问到这个文件的。见下图。

苏南大叔:electron 如何读取软件 package.json 中的名称及版本号 - package_json
electron 如何读取软件 package.json 中的名称及版本号(图8-8)

结论

苏南大叔说:换个角度考虑问题,往往可以得到一个新的视角和空间,写代码也是这样。package.json并不是个神话级别的文件,其实它就是个普通json文件罢了,无它。您说是不是呢?

更多electron的经验文章,请点击这里查看:https://newsn.net/tag/electron/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   node    electron