0
点赞
收藏
分享

微信扫一扫

Electron那些事02:打包

勇敢的趙迦禾 2022-03-12 阅读 90
electron

【打包】

接上回 Electron那些事01:起步_uikoo9的专栏-CSDN博客

简单介绍了electron,以及使用electron做了一个桌面应用demo,

相信大家现在最想做的事情就是将桌面应用打包后发个其他人体验,本节开始electron打包

【electron-packager】

官方推荐的打包工具有3个

几个工具的区别后续单独写一篇文章介绍,

简单的说electron-forge和electron-builder都是打包工具集功能比较多,适合想快速上手的小伙伴,但是遇到一些定制化的需求也比较难受

本节使用electron-packager打包 ,GitHub - electron/electron-packager: Customize and package your Electron app with OS-specific bundles (.app, .exe, etc.) via JS or CLI

【查看electron应用内容】

讲打包前需要先说一下用electron开发的应用的大体结构,

就拿vscode来说吧,找到vscode后右键点击显示包内容,

可以看到包内容如下

大家可以找找你在使用的应用,相信我,使用electron应用还是挺多的

凡是Contents/Resources/app这类型目录结构,十有八九是electron应用,

且app文件夹下是你主要是的代码,resources外的是系统层级的代码,

也就是说不管你用electron开发多少个应用,resources内的部分会不同,resources外的大体相同 

那么怎么判断到底是不是electron开发的,可以看这个目录contents/macos/下,

【开发和打包的不同】

讲了electron应用大概的目录结构,下面要说一下开发时应用跑起来和打包后应用跑起来的不同

开发时,拿上一节的代码为例,红框了几个重点

1.左侧红框内的文件,是你应用跑起来的实际代码,

上面示例和是代码项目其他文件同一层级的,有一些混淆,就是你应用中真正有用的是左侧红框内的代码

2.本地开发是应用跑起来的原理

执行npm start,也就是npm run start

等同于执行electron .

electron会在.(当前目录)去找package.json中的main属性,值为main.js,这个是入口

然后和main.js关联的index.html,preload.js,util/menu.js对应的运行起来

3.为什么开发时electron在devDependencies内

大家有没有注意到electron的npm包是在devDependencies内,而不是在dependencies内,

是因为electron并不是你应用打包后运行依赖的npm包 

应用打包时通过打包工具将electron环境打到包内,提供electron的环境

所以electron这个npm包放到devDependencies内,完全是为了你本地开发的时候有electron环境

这个还是比较重要的一点,可以多理解下

4.那么问题来了

那么可以看到上图代码,其实是“开发环境各文件”和“electron应用实际代码”的混合,

目前这个代码结构不合理,就是一个demo,但是实际中可能发布后的应用也是这种结构。。

【拆分代码】

1.将上述electron应用实际代码拆分到src文件夹下

2.为electron应用定制了一个package.json,

3.这个package.json的name和外层的不同,可以理解为你应用最终的名字

4.这个package.json中有dependencies,这个是electron应用实际以来的npm包

5.右侧的package.json是原来外层package.json,可以看到删除了main属性同时将start命令修改为electron src,意思是让electron执行src内的代码

以上代码见:GitHub - insistime/electron-guides at 0.0.4

【electron-packager打包】

electron-packager的打包也比较简单,详见:Options | electron-packager 

代码如下

// electron pakcager
var electronPackager    = require('electron-packager');

// options
var options = {
    dir             : 'src',
    out             : 'out',
    appCopyright    : 'Copyright © 2022 vq版权所有',
    appVersion      : '0.0.1',
    overwrite       : true,
    arch            : 'x64',
    name            : 'vq'
};

// pack
electronPackager(options);

dir是源文件的目录

out是打包目录

外层package.json中添加这两个脚本

    "prebuild": "cd src && npm i",
    "build": "node electron-packager.js",

 执行npm run build

【看效果】

在out下生成了vq-darwin-x64文件夹,vq是应用名,darwin是macos,x64是平台 

这个文件夹下的vq就是应用(mac下其实就是文件夹)

右键vp点击显示包内容如下

 

1.结构和上面讲的electron结构一样

2.app下的文件就是开发是src下的文件,使用到的npm包也只有一个

对比之前vscode的结构看下,是不是很相似

 

 

举报

相关推荐

0 条评论