究竟运行的是哪个electron? 教你辨别真假electron
发布于 作者:苏南大叔 来源:程序如此灵动~大家好,苏南大叔这次写一篇水文。主题就是:electron
命令的运行方法。比如:全局安装了个electron
,项目下面还安装了一个electron
。那么最终你究竟你运行的是哪个electron
呢?不少新人都傻傻的不清楚了。因为有的时候,版本不一致会导致很多意料之外的情况发生,所以,不如静下心来想一想,究竟是哪个electron
程序体在运行?
本文测试环境:mac
/win10
。
背景信息
假设执行命令如下:
npm i electron@1.7.9 -g
npm i electon@3.1.4 -D
那么,全局模式下有个1.7.9
版本的electron
,而项目目录下有个3.1.4
版本的electron
。
对于后者3.1.4
,存在于node_modules/.bin/
目录下面,如果是win
环境,那么在项目下面会有个electron.cmd
文件。而如果是mac
环境,就有会有个electron
文件。
如上是本文的技术背景提示信息。下面大家可以分别看看,各种情况下electron
命令的版本了。
主要分为两种情况,一种是electron
直接出现在命令行里面。另外一种情况是:electron
字样出现在package.json
里面,在命令行里面执行:npm run
。
命令行里面执行electron
现在假设工作目录就是项目的根目录。那么,
electron .
命令行 | 系统 | 版本 |
---|---|---|
electron . | mac/win | 1.7.9 |
node_modules/.bin/electron . | mac | 3.1.4 |
node_modules/.bin/electron . | win | ----- |
node_modules/.bin/electron.cmd . | win | ----- |
node_modules.binelectron . | win | 3.1.4 |
node_modules.binelectron.cmd . | win | 3.1.4 |
大体的结论就是:不指明路径的话,electron
就指的是全局的electron
。指明路径的话,就要注意win
下面的路径写法比较特殊些。另外,win
下面的.cmd
字样,是可写可不写的。
上述命令定义在package.json
中
测试的命令和上面一样,但是定义到了package.json
里面。用scripts
定义为start
命令。那么上述测试命令的结果又会是如何呢?
npm start
package.json
:
"scripts": {
"start": "electron .",
}
命令行 | 系统 | 版本 |
---|---|---|
electron . | mac/win | 3.1.4 |
node_modules/.bin/electron . | mac | 3.1.4 |
node_modules/.bin/electron . | win | 3.1.4 |
node_modules/.bin/electron.cmd . | win | 3.1.4 |
node_modules.binelectron . | win | ----- |
node_modules.binelectron.cmd . | win | ----- |
node_modules\.bin\electron . | win | 3.1.4 |
node_modules\.bin\electron.cmd . | win | 3.1.4 |
那么,如果项目下没有安装3.1.4
的electron
呢?还是执行npm run
命令。
npm uninstall electron
命令行 | 系统 | 版本 |
---|---|---|
electron . | mac/win | 1.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
的路径信息解析的。
大概就说这么多,文章有点水,但是新手必看。因为,很多新手会栽倒在这个坑里面。想少掉坑,就要踩在前人的脚印上,脚印的地址是下面的这个,拿好了,保存到收藏夹里面。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。