到底运行的是哪一个electron版本?

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

大家好,苏南大叔这次写一篇水文。主题就是:electron命令的运行方法。比如:全局安装了个electron,项目下面还安装了一个electron。那么最终你究竟你运行的是哪个electron呢?不少新人都傻傻的不清楚了。因为有的时候,版本不一致会导致很多意料之外的情况发生,所以,不如静下心来想一想,究竟是哪个electron程序体在运行?

究竟运行的是哪个electron? 教你辨别真假electron

本文测试环境:mac/win10

背景信息

假设执行命令如下:

npm i [email protected] -g

npm i [email protected] -D

那么,全局模式下有个1.7.9版本的electron,而项目目录下有个3.1.4版本的electron

对于后者3.1.4,存在于node_modules/.bin/目录下面,如果是win环境,那么在项目下面会有个electron.cmd文件。而如果是mac环境,就有会有个electron文件。

究竟运行的是哪个electron? 教你辨别真假electron

如上是本文的技术背景提示信息。下面大家可以分别看看,各种情况下electron命令的版本了。

主要分为两种情况,一种是electron直接出现在命令行里面。另外一种情况是:electron字样出现在package.json里面,在命令行里面执行:npm run

命令行里面执行electron

现在假设工作目录就是项目的根目录。那么,

electron .

命令行系统版本
electron .mac/win1.7.9
node_modules/.bin/electron .mac3.1.4
node_modules/.bin/electron .win-----
node_modules/.bin/electron.cmd .win-----
node_modules.binelectron .win3.1.4
node_modules.binelectron.cmd .win3.1.4

大体的结论就是:不指明路径的话,electron就指的是全局的electron。指明路径的话,就要注意win下面的路径写法比较特殊些。另外,win下面的.cmd字样,是可写可不写的。

究竟运行的是哪个electron? 教你辨别真假electron

上述命令定义在package.json

测试的命令和上面一样,但是定义到了package.json里面。用scripts定义为start命令。那么上述测试命令的结果又会是如何呢?

npm start

package.json:

"scripts": {

"start": "electron .",

}

命令行系统版本
electron .mac/win3.1.4
node_modules/.bin/electron .mac3.1.4
node_modules/.bin/electron .win3.1.4
node_modules/.bin/electron.cmd .win3.1.4
node_modules.binelectron .win-----
node_modules.binelectron.cmd .win-----
node_modules\.bin\electron .win3.1.4
node_modules\.bin\electron.cmd .win3.1.4

究竟运行的是哪个electron? 教你辨别真假electron

那么,如果项目下没有安装3.1.4electron呢?还是执行npm run命令。

npm uninstall electron

命令行系统版本
electron .mac/win1.7.9
node_modules/.bin/electron .mac-----
node_modules/.bin/electron .win-----
node_modules/.bin/electron.cmd .win-----
node_modules.binelectron .win-----
node_modules.binelectron.cmd .win-----
node_modules\.bin\electron .win-----
node_modules\.bin\electron.cmd .win-----

这里面的结论是:写在package.json里面electron字样,优先识别项目根目录下面的electron。在win系统下面,斜线的写法,要进行转义或者变成linux的写法。

总结

就这么两个electron版本,就能把人绕晕。要是electron版本再多,就更晕了。这里,要首先分清electron命令到底是在package.json中定义的,还是在命令行里面自己输入的。

如果是定义在package.json里面的话,这个就很有可能会脱离你的想象了。这个里面的命令是个小的圈子环境,可以自动识别出node_modules/.bin/下面的所有命令。而且可以理解为一个类似unix的环境,至少其中的路径信息的斜线,是按照unix的路径信息解析的。

以上是 到底运行的是哪一个electron版本? 的全部内容, 来源链接: utcz.com/a/118907.html

回到顶部