最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 翻译 | 《JavaScript Everywhere》第20章 Electron部署

    正文概述 掘金(毛小悠)   2020-12-08   407

    翻译 | 《JavaScript Everywhere》第20章 Electron部署

    写在最前面

    大家好呀,我是毛小悠,是一位前端开发工程师。正在翻译一本英文技术书籍。

    为了提高大家的阅读体验,对语句的结构和内容略有调整。如果发现本文中有存在瑕疵的地方,或者你有任何意见或者建议,可以在评论区留言,或者加我的微信:code_maomao,欢迎相互沟通交流学习。

    (σ゚∀゚)σ..:*☆哎哟不错哦

    第20章 Electron部署

    第一次教编程课程时,我想到了一个聪明的想法,就是通过文字冒险游戏介绍课程主题。学生将进入实验室,坐在桌前,并浏览一系列有趣的提示(对我而言)和说明。这引起了混合,不是开玩笑(嗯,也许是因为开玩笑),而是因为学生没有以这种方式与“程序”互动。这些学生习惯了GUI(图形用户界面),通过文本提示与程序进行交互 对于他们中的许多人来说都是不适应的。

    目前运行我们的应用程序,我们需要在终端应用程序中键入命令来启动Electron进程。在本章中,我们将研究如何打包应用程序进行分发。为此,我们将使用流行的Electron Builder 库,它将帮助我们打包应用程序并将其分发给用户。

    Electron Builder

    Electron Builder是一个用于简化打包和分发ElectronProtonNative应用程序的库。

    虽然还有其他打包解决方案,但Electron Builder可以简化与应用程序分发相关的许多难题,包括:

    • 代码签名

    • 多平台部署目标

    • 自动更新

    • 部署

    它在灵活性和功能性之间取得了很好的平衡。此外,尽管我们不会使用它们,但WebpackReactVueVanilla JavaScript都有一些Electron Builder配套案例。

    Electron Builder与Electrom Forge

    Electron Forge 是另一个流行的库,提供了许多与Electron Builder类似的功能。

    Electron Forge的主要优点是它基于官方的Electron库,而Electron Builder是独立的构建工具。

    这意味着用户将从技术生态系统的增长中受益,有了更多的选择。缺点是Electron Forge基于更加严格的应用程序设置。就本书而言,Electron Builder可在功能和学习成本之间找到适当的平衡,但我希望你也仔细阅读一下Electron Forge

    配置Electron Builder

    Electron Builder的所有配置将在我们应用程序的 package.json 文件中进行。

    在该文件中,我们可以看到 electron-builder 已被列为开发的依赖项。在 package.json 文件中,我们可以包含一个名为“ build”的键名key,该key 将包含Electron Builder打包应用程序的所有说明。首先,我们将包括两个字段:

    • appId

      这是我们应用程序的唯一标识符。macOS将这个视为CFBundleidentifierWindows将其称为AppUserModelID。标准是使用反向DNS格式。例如,如果我们经营一家域为 jseverywhere.io的公司并构建一个名为Notedly的应用程序,则IDio.jseverywhere.notedly

    • productName

      这是我们便于阅读的产品名称,package.json名称字段需要带连字符或单个单词的名称。

    总之,我们开始的构建配置将如下所示:

    "build": {
      "appId": "io.jseverywhere.notedly",
      "productName": "Notedly"
    }, 
    

    Electron Builder为我们提供了许多配置选项,在本章中我们将探讨其中的几个。

    有关完整列表,请访问Electron Builder文档。

    为我们当前的平台构建

    有了最低限度的配置,我们就可以创建我们的第一个应用程序。默认情况下,Electron Builder将为我们正在开发的系统生成一个应用。例如,由于我是在MacBook上编写的,因此我的应用将默认为macOS

    首先,我们将两个脚本添加到package.json 文件中,这些脚本将负责应用程序的构建。首先, 打包脚本将生成打包目录,而不会完全打包应用程序。这对于测试很有用。其次,dist 脚本将可以分发格式打包应用程序,例如macOS DMGWindows安装程序或DEB程序包。

    "scripts": {
      // add the pack and dist scripts to the existing npm scripts list
      "pack": "electron-builder --dir",
      "dist": "electron-builder"
    } 
    

    进行此更改后,你可以在终端应用程序中运行 npm run dist ,这会将应用程序打包在项目的 dist/ 目录中。切换到 dist / 目录,你可以看到Electron Builder已经打包了该应用程序以供你的操作系统分发。

    App 图标

    你可能已经注意到的一件事是,我们的应用程序正在使用默认的Electron应用程序图标。这对于本地开发是很好的,但是对于生产用的应用程序,我们将希望使用我们自己的品牌。

    在我们项目的 /resources 文件夹中,包含了一些适用于macOSWindows的应用程序图标。为了从PNG文件生成这些图标,我使用了

    iConvert Icons应用程序,可用于macOSWindows

    在我们的 /resources 文件夹中,你将看到以下文件:

    • icon.icns macOS应用程序图标

    • Windows应用程序图标icon.ico

    • Linux所使用的包含一系列大小不同的.png文件的图标目录

    (可选)我们还可以通过为视网膜屏幕添加名称分别为background.png background@2x.png的图标来包含macOS DMG的背景图像 。

    现在,在 package.json 文件中,我们更新构建对象以指定构建资源目录的名称:

     "build": {
      "appId": "io.jseverywhere.notedly",
      "productName": "Notedly",
      "directories": {
        "buildResources": "resources"
      }
    },
    

    现在,当我们构建应用程序时,Electron Builder将其与我们的自定义应用程序图标打包在一起( 见图20-1)。

    翻译 | 《JavaScript Everywhere》第20章 Electron部署

    20-1macOS dock中的自定义应用程序图标

    多个平台构建

    当前,我们只构建对与我们的开发平台匹配的操作系统的应用程序。

    Electron作为平台的最大优势之一是,通过更新dist 脚本,它允许我们使用相同的代码来匹配多个平台 。为此,Electron Builder利用了免费和开源代码

    electron-build-service。我们将使用该服务的公共实例,但是为了保证额外安全性和隐私性的组织可以自行托管它。

    在我们的 package.json中, 将dist 脚本更新为:

     "dist": "electron-builder -mwl" 
    

    这将导致根据macOSWindowsLinux的构建。

    从此处,我们可以通过将应用程序作为发行版上传到GitHub或我们可以分发文件到任何位置(例如Amazon S3Web服务器)

    代码签名

    macOSWindows都包含代码签名的概念。代码签名有助于提高用户的安全性和信任度,因为它保证了应用程序的可信赖性。我不会逐步执行代码签名过程,因为它是特定于操作系统的,并且会给开发人员带来一定的成本。

    Electron Builder文档提供了有关各种平台的代码签名的 综合文章。

    此外, Electron文档还提供了一些资源和链接。

    如果你要构建一个产品型应用程序,建议你进一步研究macOSWindows的代码签名选项。

    结论

    我们已经介绍了部署Electron应用程序的冰山一角。在本章中,我们使用Electron Builder来构建应用程序,然后,我们可以轻松地通过任何Web主机上传和分发它们。一旦我们满足了这些需求,就可以使用Electron Builder建立一个连续的构建流程:自动将发布推送到GitHubS3或其他发行平台; 并将自动更新集成到应用程序中。

    如果你有兴趣进一步探索电子开发和应用程序分发的主题,则可以采取这些有趣的下一步。

    如果有理解不到位的地方,欢迎大家纠错。如果觉得还可以,麻烦您点赞收藏或者分享一下,希望可以帮到更多人。


    起源地下载网 » 翻译 | 《JavaScript Everywhere》第20章 Electron部署

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元