跳到内容

publish 键包含一组选项,用于指示 electron-builder 如何发布工件并为 自动更新 构建更新信息文件。

String | Object | Array<Object | String>,其中 ObjectKeygen通用服务器GitHubS3SpacesSnap Store 选项。顺序很重要 - 第一个项目将用作默认的自动更新服务器。可以在顶级配置或任何平台特定配置(maclinuxwin)或目标特定配置(例如 nsis)中指定。

请注意,当使用通用服务器时,您必须自己上传构建的应用程序和元数据文件。

Travis 和 AppVeyor 支持发布工件。但这需要为每个 CI 进行额外的配置,并且您需要配置要发布的内容。electron-builder 使发布变得非常简单。

如果定义了 GH_TOKENGITHUB_TOKEN,则默认为 [{provider: "github"}]

如果定义了 KEYGEN_TOKEN 并且未定义 GH_TOKENGITHUB_TOKEN,则默认为 [{provider: "keygen"}]

如果定义了 GITHUB_RELEASE_TOKEN,它将用于代替 (GH_TOKENGITHUB_TOKEN) 来发布您的版本。- 例如 mac: export GITHUB_RELEASE_TOKEN=<my token> - 当您的应用检查更新等时,仍将使用 GITHUB_TOKEN。- 您可以在创建细粒度的个人访问令牌时将您的 GITHUB_TOKEN 设置为“只读”,并将 GITHUB_RELEASE_TOKEN 设置为“读写”。- “Contents” 细粒度权限就足够了。(在撰写本文时 - 2024 年 4 月)

Snap store

默认情况下,snap 目标发布到 snap store(Linux 的应用商店)。要强制发布到其他提供商,请为 snap 显式指定发布配置。

您可以发布到多个提供商。例如,将 Windows 工件发布到 GitHub 和 Bitbucket(顺序很重要 - 第一个项目将用作默认的自动更新服务器,因此,在本示例中,应用将使用 github 作为自动更新提供商)

{
  "build": {
    "win": {
      "publish": ["github", "bitbucket"]
    }
  }
}
win:
  publish:
      # an object provider for github with additional options
    - provider: github
      protocol: https
      # a string provider for bitbucket that will use default options
    - bitbucket

您还可以使用 CLI 参数配置发布,例如,强制将 snap 发布到 GitHub 而不是 Snap Store:-c.snap.publish=github

如果需要,可以使用自定义发布提供商。

在所有发布选项中,都支持文件宏

如何发布

摘自 electron-builder 命令的 CLI 用法

Publishing:
  --publish, -p  [choices: "onTag", "onTagOrDraft", "always", "never"]
CLI --publish 选项值

描述
onTag 仅在标签推送时
onTagOrDraft 在标签推送时或草稿版本存在时
always 始终发布
never 从不发布

但是请考虑使用自动规则,而不是显式指定 publish

  • 如果检测到 CI 服务器,则为 — onTagOrDraft

  • 如果 CI 服务器报告标签已推送,则为 — onTag

仅当标签被推送时,才会起草发布(如果尚不存在)并发布工件。

  • 如果名为 releasenpm 脚本,则为 — always

添加到开发 package.json 中的 scripts

"release": "electron-builder"

并且如果您运行 yarn release,将起草发布(如果尚不存在)并发布工件。

  1. 起草新版本。将“标签版本”设置为您的应用程序 package.jsonversion 的值,并以 v 为前缀。“发布标题”可以是您想要的任何内容。

    例如,如果您的应用程序 package.json 版本为 1.0,则您的草稿的“标签版本”将为 v1.0

  2. 推送一些提交。每个 CI 构建都将更新附加到此草稿的工件。

  3. 完成后,发布版本。GitHub 将为您标记最新的提交。

此工作流的好处是,它允许您始终拥有最新的工件,并且一旦准备就绪即可发布版本。

在 Amazon S3 和其他非 GitHub 上的持续部署工作流

此示例工作流是模仿 maven 中如何处理版本的(这是许多可能的工作流之一的示例,您不必遵循它)。

  1. 设置您的 CI 以在每次提交时发布。例如,在您的 package.json 中使用 "dist": "electron-builder --publish always"
  2. 将您的应用程序 package.json 中的版本设置为 1.9.0-snapshot(或 1.9.0-master 或您希望您的开发渠道命名的任何名称)。这会将名为 snapshot.yml 的文件和名为 something-snapshot.exe 的构建(以及 mac 的对应项)发布到 S3。
  3. 当您准备好部署时,只需将您的软件包版本更改为 1.9.0 并推送。这将在 s3 上生成 latest.ymlsomething.exe。通常,您也会对这个版本进行 git 标记(只是为了跟踪它)。
  4. 之后立即将版本改回快照版本,即 1.10.0-snapshot,并提交它。

GitHub 仓库

使用以下方式自动检测

  • 应用程序或开发 package.json 中的 repository,
  • 如果未设置,则使用环境变量
    • TRAVIS_REPO_SLUG
    • APPVEYOR_REPO_NAME
    • CIRCLE_PROJECT_USERNAME/CIRCLE_PROJECT_REPONAME
  • 如果没有环境变量,则从 .git/config origin url 获取。

发布者

Bitbucket

Electron-Builder / builder-util-runtime / BitbucketOptions

Bitbucket 选项。https://bitbucket.org/ 定义 BITBUCKET_TOKEN 环境变量。

为了将应用密码转换为可用的令牌,您可以利用这个

convertAppPassword(owner: string, appPassword: string) {
 const base64encodedData = Buffer.from(`${owner}:${appPassword.trim()}`).toString("base64")
 return `Basic ${base64encodedData}`
}

继承自

属性

渠道?

readonly optional channel: null | string

渠道。

默认值
latest

所有者

readonly owner: string

仓库所有者


提供者

readonly provider: "bitbucket"

提供者。必须是 bitbucket

覆盖

PublishConfiguration.provider


publishAutoUpdate?

readonly optional publishAutoUpdate: boolean

是否发布自动更新信息文件。

自动更新仅依赖列表中的第一个提供商(您可以指定多个发布者)。因此,可能不需要为其他配置的提供商上传元数据文件。但默认情况下会上传。

默认值
true
继承自

PublishConfiguration.publishAutoUpdate


requestHeaders?

readonly optional requestHeaders: OutgoingHttpHeaders

任何自定义请求标头

继承自

PublishConfiguration.requestHeaders


slug

readonly slug: string

仓库 slug/名称


timeout?

readonly optional timeout: null | number

请求超时时间,以毫秒为单位。(默认值为 2 分钟;O 将被忽略)

默认值
120000
继承自

PublishConfiguration.timeout


token?

readonly optional token: null | string

用于支持从私有 bitbucket 仓库自动更新的 应用密码


username?

readonly optional username: null | string

用于支持从私有 bitbucket 仓库自动更新的用户名。

Github

Electron-Builder / builder-util-runtime / GithubOptions

GitHub 选项。

需要 GitHub 个人访问令牌。您可以通过访问 https://github.com/settings/tokens/new 来生成。访问令牌应具有 repo 作用域/权限。定义 GH_TOKEN 环境变量。

继承自

属性

渠道?

readonly optional channel: null | string

渠道。

默认值
latest

主机?

readonly optional host: null | string

主机(包括需要的端口)。

默认值
github.com

所有者?

readonly optional owner: null | string

所有者。


私有?

readonly optional private: null | boolean

如果定义了 GH_TOKEN 环境变量,是否使用私有 github 自动更新提供商。请参阅 私有 GitHub 更新仓库


协议?

readonly optional protocol: null | "https" | "http"

协议。GitHub 发布者仅支持 https

默认值
https

提供者

readonly provider: "github"

提供者。必须是 github

覆盖

PublishConfiguration.provider


publishAutoUpdate?

readonly optional publishAutoUpdate: boolean

是否发布自动更新信息文件。

自动更新仅依赖列表中的第一个提供商(您可以指定多个发布者)。因此,可能不需要为其他配置的提供商上传元数据文件。但默认情况下会上传。

默认值
true
继承自

PublishConfiguration.publishAutoUpdate


发布类型?

optional releaseType: null | "draft" | "prerelease" | "release"

发布类型。默认情况下,将创建 draft 版本。

您也可以使用环境变量设置发布类型。如果 EP_DRAFT 设置为 true,则为 draft;如果 EP_PRE_RELEASE 设置为 true,则为 prerelease

默认值
draft

仓库?

readonly optional repo: null | string

仓库名称。 自动检测


requestHeaders?

readonly optional requestHeaders: OutgoingHttpHeaders

任何自定义请求标头

继承自

PublishConfiguration.requestHeaders


timeout?

readonly optional timeout: null | number

请求超时时间,以毫秒为单位。(默认值为 2 分钟;O 将被忽略)

默认值
120000
继承自

PublishConfiguration.timeout


令牌?

readonly optional token: null | string

用于支持从私有 github 仓库自动更新的访问令牌。永远不要在配置文件中指定它。仅用于 setFeedURL


vPrefixedTagName?

readonly optional vPrefixedTagName: boolean

是否使用以 v 为前缀的标签名称。

默认值
true

Keygen

Electron-Builder / builder-util-runtime / KeygenOptions

Keygen 选项。https://keygen.sh/ 定义 KEYGEN_TOKEN 环境变量。

继承自

属性

账户

readonly account: string

Keygen 账户的 UUID


渠道?

readonly optional channel: null | "stable" | "rc" | "beta" | "alpha" | "dev"

渠道。

默认值
stable

主机?

readonly optional host: string

用于自托管实例的 Keygen 主机

默认值
"api.keygen.sh"

平台?

readonly optional platform: null | string

目标平台。在发布期间以编程方式显式设置。


产品

readonly product: string

Keygen 产品的 UUID


提供者

readonly provider: "keygen"

提供者。必须是 keygen

覆盖

PublishConfiguration.provider


publishAutoUpdate?

readonly optional publishAutoUpdate: boolean

是否发布自动更新信息文件。

自动更新仅依赖列表中的第一个提供商(您可以指定多个发布者)。因此,可能不需要为其他配置的提供商上传元数据文件。但默认情况下会上传。

默认值
true
继承自

PublishConfiguration.publishAutoUpdate


requestHeaders?

readonly optional requestHeaders: OutgoingHttpHeaders

任何自定义请求标头

继承自

PublishConfiguration.requestHeaders


timeout?

readonly optional timeout: null | number

请求超时时间,以毫秒为单位。(默认值为 2 分钟;O 将被忽略)

默认值
120000
继承自

PublishConfiguration.timeout

S3

Electron-Builder / builder-util-runtime / S3Options

Amazon S3 选项。需要 AWS 凭证,请参阅 获取您的凭证。定义 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 环境变量。或在 ~/.aws/credentials 中。

示例配置

{
 "build":
   "publish": {
     "provider": "s3",
     "bucket": "bucket-name"
   }
 }
}

继承自

属性

加速?

readonly optional accelerate: boolean

如果设置为 true,这将启用 s3 加速端点。这些端点具有以下特定格式:${bucketname}.s3-accelerate.amazonaws.com


ACL?

readonly optional acl: null | "private" | "public-read"

ACL。设置为 null 以不添加

请参阅 S3 提供商所需的权限

默认值
public-read
覆盖

BaseS3Options.acl


存储桶

readonly bucket: string

存储桶名称。


渠道?

optional channel: null | string

更新渠道。

默认值
latest
继承自

BaseS3Options.channel


加密?

readonly optional encryption: null | "AES256" | "aws:kms"

用于对象的服务器端加密算法。


端点?

readonly optional endpoint: null | string

用于发送请求的端点 URI。默认端点从配置的区域构建。端点应为类似 https://{service}.{region}.amazonaws.com 的字符串。


forcePathStyle?

readonly optional forcePathStyle: boolean

如果为 true,则强制使用路径样式端点,其中存储桶名称是路径的一部分。路径样式访问


路径?

readonly optional path: null | string

目录路径。

默认值
/
继承自

BaseS3Options.path


提供者

readonly provider: "s3"

提供者。必须是 s3

覆盖

BaseS3Options.provider


publishAutoUpdate?

readonly optional publishAutoUpdate: boolean

是否发布自动更新信息文件。

自动更新仅依赖列表中的第一个提供商(您可以指定多个发布者)。因此,可能不需要为其他配置的提供商上传元数据文件。但默认情况下会上传。

默认值
true
继承自

BaseS3Options.publishAutoUpdate


区域?

optional region: null | string

区域。在发布时自动确定和设置。


requestHeaders?

readonly optional requestHeaders: OutgoingHttpHeaders

任何自定义请求标头

继承自

BaseS3Options.requestHeaders


存储类别?

readonly optional storageClass: null | "STANDARD" | "REDUCED_REDUNDANCY" | "STANDARD_IA"

用于对象的存储类型。

默认值
STANDARD

timeout?

readonly optional timeout: null | number

请求超时时间,以毫秒为单位。(默认值为 2 分钟;O 将被忽略)

默认值
120000
继承自

BaseS3Options.timeout

Snap Store

Electron-Builder / builder-util-runtime / SnapStoreOptions

Snap Store 选项。要直接发布到 Snapcraft,请参阅 Snapcraft 身份验证选项,以获取本地或 CI/CD 身份验证选项。

继承自

属性

渠道?

readonly optional channels: null | string | string[]

snap 将发布的渠道列表。

默认值
["edge"]

提供者

readonly provider: "snapStore"

提供者。必须是 snapStore

覆盖

PublishConfiguration.provider


publishAutoUpdate?

readonly optional publishAutoUpdate: boolean

是否发布自动更新信息文件。

自动更新仅依赖列表中的第一个提供商(您可以指定多个发布者)。因此,可能不需要为其他配置的提供商上传元数据文件。但默认情况下会上传。

默认值
true
继承自

PublishConfiguration.publishAutoUpdate


仓库?

readonly optional repo: string

snapcraft 仓库名称


requestHeaders?

readonly optional requestHeaders: OutgoingHttpHeaders

任何自定义请求标头

继承自

PublishConfiguration.requestHeaders


timeout?

readonly optional timeout: null | number

请求超时时间,以毫秒为单位。(默认值为 2 分钟;O 将被忽略)

默认值
120000
继承自

PublishConfiguration.timeout

Spaces

Electron-Builder / builder-util-runtime / SpacesOptions

DigitalOcean Spaces 选项。需要访问密钥,定义 DO_KEY_IDDO_SECRET_KEY 环境变量。

继承自

属性

ACL?

readonly optional acl: null | "private" | "public-read"

ACL。设置为 null 以不添加

默认值
public-read
继承自

BaseS3Options.acl


渠道?

optional channel: null | string

更新渠道。

默认值
latest
继承自

BaseS3Options.channel


名称

readonly name: string

空间名称。


路径?

readonly optional path: null | string

目录路径。

默认值
/
继承自

BaseS3Options.path


提供者

readonly provider: "spaces"

提供者。必须是 spaces

覆盖

BaseS3Options.provider


publishAutoUpdate?

readonly optional publishAutoUpdate: boolean

是否发布自动更新信息文件。

自动更新仅依赖列表中的第一个提供商(您可以指定多个发布者)。因此,可能不需要为其他配置的提供商上传元数据文件。但默认情况下会上传。

默认值
true
继承自

BaseS3Options.publishAutoUpdate


区域

readonly region: string

区域(例如 nyc3)。


requestHeaders?

readonly optional requestHeaders: OutgoingHttpHeaders

任何自定义请求标头

继承自

BaseS3Options.requestHeaders


timeout?

readonly optional timeout: null | number

请求超时时间,以毫秒为单位。(默认值为 2 分钟;O 将被忽略)

默认值
120000
继承自

BaseS3Options.timeout

BYO 通用 (自定义)

(也许在 PR 中将其提交到上游!)Electron-Builder / builder-util-runtime / GenericServerOptions

通用(任何 HTTP(S) 服务器)选项。在所有发布选项中,都支持文件宏

继承自

属性

渠道?

readonly optional channel: null | string

渠道。

默认值
latest

提供者

readonly provider: "generic"

提供者。必须是 generic

覆盖

PublishConfiguration.provider


publishAutoUpdate?

readonly optional publishAutoUpdate: boolean

是否发布自动更新信息文件。

自动更新仅依赖列表中的第一个提供商(您可以指定多个发布者)。因此,可能不需要为其他配置的提供商上传元数据文件。但默认情况下会上传。

默认值
true
继承自

PublishConfiguration.publishAutoUpdate


requestHeaders?

readonly optional requestHeaders: OutgoingHttpHeaders

任何自定义请求标头

继承自

PublishConfiguration.requestHeaders


timeout?

readonly optional timeout: null | number

请求超时时间,以毫秒为单位。(默认值为 2 分钟;O 将被忽略)

默认值
120000
继承自

PublishConfiguration.timeout


URL

readonly url: string

基本 URL。例如 https://bucket_name.s3.amazonaws.com


useMultipleRangeRequest?

readonly optional useMultipleRangeRequest: boolean

是否对差异更新使用多个范围请求。如果 url 不包含 s3.amazonaws.com,则默认为 true