跳到内容

Electron-Builder / electron-builder

electron-builder npm version downloads per month donate

一个完整的解决方案,用于打包和构建可供分发的 ElectronProton Native 应用程序,支持 macOS、Windows 和 Linux,开箱即用,并提供“自动更新”支持。 :shipit

始终期待社区贡献! 👀 设置开发环境很容易 🪩

赞助商

WorkFlowy
笔记、任务、项目。
尽在一个地方。


Tidepool
您了解糖尿病数据的门户


Keygen
一个开放的、源代码可用的软件许可和分发 API


ToDesktop
ToDesktop: 一个用于构建和发布 Electron 应用程序的一体化平台


Dashcam
Dashcam: 通过 Electron 的视频崩溃报告捕获重现任何错误的步骤。

文档

请参阅 electron.build 上的完整文档。

  • NPM 包管理
  • 代码签名在 CI 服务器或开发机器上。
  • 已准备好自动更新的应用程序打包。
  • 多种目标格式
    • 所有平台:7zziptar.xztar.7ztar.lztar.gztar.bz2dir(解压缩目录)。
    • macOSdmgpkgmas
    • LinuxAppImagesnap、debian 包 (deb)、rpmfreebsdpacmanp5papk
    • Windowsnsis(安装程序)、nsis-web(Web 安装程序)、portable(无需安装的便携式应用程序)、AppX(Windows 应用商店)、MSI、Squirrel.Windows。
  • 将工件发布到 GitHub Releases、Amazon S3、DigitalOcean Spaces 和 Bintray。
  • 高级构建
  • Docker 镜像,用于在任何平台上构建适用于 Linux 或 Windows 的 Electron 应用程序。
  • Proton Native 支持。
  • 自动按需下载所有必需的工具文件(例如,用于代码签名 Windows 应用程序、制作 AppX),无需设置。
问题 答案
“我想配置 electron-builder” 查看选项
“我发现了一个错误或我有一个问题” 打开一个 issue
“我想支持开发” 捐赠

安装

强烈建议使用 Yarn 而不是 npm。

yarn add electron-builder --dev

Yarn 3 注意事项

Yarn 3 默认使用 PnP,但 electron-builder 仍然需要 node-modules(参考:yarnpkg/berry#4804)。在 .yarnrc.yaml 中添加如下配置

nodeLinker: "node-modules"
将声明使用 node-modules 而不是 PnP。

快速设置指南

electron-webpack-quick-start 是创建新的 Electron 应用程序的推荐方法。请参阅样板

  1. 在应用程序 package.json 中指定标准字段 — namedescriptionversionauthor

  2. package.json 中指定构建配置,如下所示

    "build": {
      "appId": "your.id",
      "mac": {
        "category": "your.app.category.type"
      }
    }
    
    查看所有选项。选项 files 用于指示哪些文件应打包到最终应用程序中,包括入口文件,这可能是必需的。您还可以使用单独的配置文件,例如 jstsymljson/json5。有关支持的扩展名,请参阅read-config-file编程 API 的 JS 示例

  3. 添加图标

  4. scripts 键添加到开发 package.json

    "scripts": {
      "app:dir": "electron-builder --dir",
      "app:dist": "electron-builder"
    }
    
    然后您可以运行 yarn app:dist(以可分发格式打包(例如 dmg、windows 安装程序、deb 包))或 yarn app:dir(仅生成包目录,而无需真正打包它。这对于测试目的很有用)。

    为了确保您的原生依赖项始终与 electron 版本匹配,只需将脚本 "postinstall": "electron-builder install-app-deps" 添加到您的 package.json

  5. 如果您有自己的原生插件,它们是应用程序的一部分(而不是作为依赖项),请将 nodeGypRebuild 设置为 true

请注意,默认情况下,所有内容都打包到 asar 存档中

对于将要发布到生产环境的应用程序,您应该对您的应用程序进行签名。请参阅在哪里购买代码签名证书

编程用法

请参阅 node_modules/electron-builder/out/index.d.ts。提供了 TypeScript 的类型定义,也可以在此处找到。

下面提供的代码片段也在此处“实际演示”。

"use strict"

const builder = require("electron-builder")
const Platform = builder.Platform

// Promise is returned
builder.build({
  targets: Platform.MAC.createTarget(),
  config: {
   "//": "build options, see https://goo.gl/QQXmcV"
  }
})
  .then(() => {
    // handle result
  })
  .catch((error) => {
    // handle error
  })

样板

调试

设置 DEBUG 环境变量以调试 electron-builder 正在执行的操作

DEBUG=electron-builder

FPM_DEBUG 环境变量,用于添加有关构建 linux 目标(snap 和 appimage 除外)的更多详细信息。

DEBUG_DMG=true 环境变量,用于从 hdiutil (macOS) 添加更多调试/详细程度。

cmd

Windows 上,环境变量使用 set 命令设置。

set DEBUG=electron-builder

PowerShell

PowerShell 使用不同的语法来设置环境变量。

$env:DEBUG=electron-builder

我们在空闲时间做这项开源工作。如果您希望我们投入更多时间,请捐赠