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

electron 如何读取软件 package.json 中的名称及版本号(图8-1)
读取框架(electron、node、chrome)版本号
大家都知道,electron的背后实际上是node和chrome。所以,我们可以需要读取当前electron的版本号,以及node和chrome的版本号。读取的办法也非常简单,我们利用的electron的process对象里面的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里面是很多个组件的版本号合集。大家自己看截图即可。

读取软件自身的版本信息
智者千虑,必有一疏。上面的process.versions居然没有软件自身的版本号信息,这个可能是令大家大跌眼镜的。我们来看一下,electron(node)如何读取package.json里面的内容。代码非常简单,可以在主进程和渲染进程里面使用。
var package = require("./package.json");console.log(package);
然后我们就可以顺利的拿到写在package.json里面的name和version了,甚至是我们自定义的字段diy。
var name = package.name;var version = package.version;
//var diy=package.diy;
下面用截图演示说明代码效果。我们的package.json文件如下图所示:

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

但是在渲染进程里面使用的时候,特别是渲染进程里面有类似jquery之类的js类库加载的时候,这个require方法可能是有问题的。其中之一的方案就是修改require方法名。具体请参照这篇文章:
在下面的截图中,演示的是上面的代码和jquery同时在渲染进程里面出现的情况,请知晓。


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

额外说明
1:require("./package.json")里面的./,这个值是路径,表示当前同级目录!你懂的。所以,极端情况下,你可以试试path.join。比如:
const path = require('path')console.log(require(path.join(__dirname, 'package.json')));
2:打包之后,根目录下面没有这个package.json,那是因为放到asar里面去了。对不?你懂的。所以还是能访问到这个文件的。见下图。

结论
苏南大叔说:换个角度考虑问题,往往可以得到一个新的视角和空间,写代码也是这样。package.json并不是个神话级别的文件,其实它就是个普通json文件罢了,无它。您说是不是呢?
以上是 electron如何读取package.json中的名称及版本号? 的全部内容, 来源链接: utcz.com/a/119412.html

