On this page
构建
在 Deno Deploy 中,您应用程序代码的每个版本都被表示为一个修订(或构建)。当从 GitHub 部署时,修订通常与您仓库中的 git 提交一一对应。
构建触发 Jump to heading
构建可以通过三种方式触发:
-
通过 UI 手动触发:使用构建页面上的“部署默认分支”按钮,部署默认 git 分支(通常是
main)。下拉菜单允许您选择不同的分支。 -
通过 CLI 手动触发:使用
deno deploy命令。 -
通过 GitHub 自动触发:当向与您的应用关联的 GitHub 仓库推送新的提交时。
构建阶段 Jump to heading
一个修订在变为可用状态前会经历以下阶段:
- 排队:修订等待分配给构建器。
- 准备:构建器下载源代码并恢复可用的构建缓存。
- 安装:执行安装命令(如果指定),通常用来下载依赖。
- 构建:执行构建命令(如果指定),生成构建产物并上传到运行时基础设施。
- 部署:修订准备部署到每个时间线。对于每个时间线,执行以下操作:
- 创建数据库:如果应用有附属数据库,确保该时间线存在数据库(必要时创建)。
- 预部署命令:执行应用配置的任何预部署命令,通常用于数据库迁移等任务。
- 预热:仅在“预览”时间线中,启动应用以确保其正常启动。
- 路由:将新修订推广到与该时间线关联的 URL。
如果任何步骤失败,构建将进入“失败”状态并且不会接收流量。
构建日志会在构建过程中实时推送到仪表盘,构建完成后仍可在构建页面查看。
构建缓存通过重用在构建间未更改的文件来加快构建速度。对于框架预设和 DENO_DIR 依赖缓存,此过程是自动进行的。
您可以使用构建页面右上角的“取消”按钮取消正在运行的构建。构建会在运行 5 分钟后自动取消。
构建配置 Jump to heading
应用配置定义了如何将源代码转换为可部署的构建产物。
您可以在两个位置设置应用配置:
- 在源代码中:在应用程序目录中使用
deno.json或deno.jsonc文件。 - 在 Deno Deploy 仪表盘:使用应用配置设置。
如果您同时指定了这两种方式,源代码中的设置优先于仪表盘中的设置。如果最近一次成功构建使用了源代码中的配置,则无法在仪表盘中编辑任何应用配置值。
应用目录必须通过仪表盘配置。此设置不能通过源代码配置,因为它决定了在哪里查找源代码本身。
在仪表盘中编辑应用配置 Jump to heading
您可以在三个地方修改应用配置:
- 创建应用时点击“编辑构建配置”
- 在应用设置中点击构建配置部分的“编辑”
- 在失败构建页面的重试抽屉中
在创建应用时,如果您使用已识别的框架或常见构建配置,构建配置可能会自动从仓库中检测。
配置选项 Jump to heading
-
应用目录:仓库中用作应用根目录的文件夹。适用于 Monorepo。默认是仓库根目录。
-
框架预设:针对支持的框架(如 Next.js 或 Fresh)做了优化的配置。了解更多框架集成。
-
安装命令:安装依赖的 shell 命令,如
npm install或deno install。 -
构建命令:构建项目的 shell 命令,通常是
package.json或deno.json中的任务,如deno task build或npm run build。 -
预部署命令:构建完成但部署前运行的 shell 命令,通常用于数据库迁移等任务。
-
运行时配置:决定应用如何提供流量:
- 动态:用于通过服务器响应请求的应用(API 服务器、服务器渲染网站等)
- 入口文件:要执行的 JavaScript 或 TypeScript 文件
- 参数(可选):传递给应用的命令行参数
- 运行时工作目录(可选):应用运行时的工作目录
- 运行时内存限制(可选):应用运行时可使用的最大内存。默认 768 MB,Pro 计划下可增加至 4 GB。
- 静态:用于提供预渲染静态内容的静态网站
- 目录:包含静态资源的文件夹(如
dist、.output) - 单页应用模式(可选):对不匹配静态文件的路径返回
index.html,而不是 404 错误
- 目录:包含静态资源的文件夹(如
- 自动:使用框架预设时,运行时配置会自动设置。
- 运行时内存限制(可选):应用运行时可使用的最大内存。默认 768 MB,Pro 计划下可增加至 4 GB。
- 动态:用于通过服务器响应请求的应用(API 服务器、服务器渲染网站等)
-
构建超时:构建过程允许的最长时间。默认 5 分钟,Pro 计划下可增加至 15 分钟。
-
构建内存:分配给构建过程的内存大小。默认 3 GB,Pro 计划下可增加至 4 GB。
从源代码编辑应用配置 Jump to heading
要从源代码配置您的应用,在应用根目录中添加一个带有 deploy 键的 deno.json 或 deno.jsonc 文件。如果在此键下指定了以下任何应用配置选项,整个配置将从文件中获取,而不是从仪表盘(仪表盘中指定的配置将被忽略)。
deno.json 选项 Jump to heading
deploy.framework(必填,除非设置了deploy.runtime):要使用的框架预设,例如nextjs或fresh。设置此选项会自动配置框架的默认值。可用预设在框架集成文档中列出。deploy.install(可选):安装依赖的 shell 命令。deploy.build(可选):构建项目的 shell 命令。deploy.predeploy(可选):构建完成但部署前运行的 shell 命令,通常用于数据库迁移等任务。deploy.runtime(必填,除非设置了deploy.framework):应用如何提供流量的配置。应用可以是静态的或动态的,具体如下:- 对于动态应用:
deploy.runtime.type:必须设置为"dynamic",或省略(默认动态)。deploy.runtime.entrypoint:要执行的 JavaScript 或 TypeScript 文件。deploy.runtime.args(可选):传递给应用的命令行参数。deploy.runtime.cwd(可选):应用运行时的工作目录。deploy.runtime.memory_limit(可选):应用运行时可使用的最大内存。默认 768 MB,Pro 计划下可增加至 4 GB。
- 对于静态应用:
deploy.runtime.type:必须设置为"static"。deploy.runtime.cwd:包含静态资源的文件夹(如dist、.output)。deploy.runtime.spa(可选):如果为true,对未匹配静态文件的路径返回index.html,而不是返回 404。
- 对于使用框架预设的应用:
deploy.runtime.memory_limit(可选):应用运行时可使用的最大内存。默认 768 MB,Pro 计划下可增加至 4 GB。
- 对于动态应用:
示例 Jump to heading
deno.json 中的动态应用配置示例:
{
"deploy": {
"install": "npm install",
"build": "npm run build",
"predeploy": "deno run --allow-net --allow-env migrate.ts",
"runtime": {
"type": "dynamic",
"entrypoint": "./app/server.js",
"args": ["--port", "8080"],
"cwd": "./app"
}
}
}
deno.jsonc 中的静态应用配置示例:
{
"deploy": {
"install": "npm install",
"build": "npm run build",
"runtime": {
"type": "static",
"cwd": "./public",
"spa": true
}
}
}
使用 Next.js 框架预设的配置示例(deno.json):
{
"deploy": {
"framework": "nextjs",
"install": "npm install",
"build": "npm run build"
}
}
构建环境 Jump to heading
构建环境运行于 Linux,支持 x64 或 ARM64 架构。可用工具包括:
deno(版本与运行时相同)nodenpmnpxyarn(v1)pnpmgittargzip
构建器内部所有 JavaScript 代码均通过 Deno 执行。
node 命令实际上是一个 shim,负责将 Node.js 的调用转换为 deno run。类似地,npm、npx、yarn 和 pnpm 也都是通过 Deno 而非 Node.js 运行。
为“构建”上下文配置的环境变量在构建过程中可用,但来自“生产”或“开发”上下文的变量不可用。了解更多关于环境变量。
构建期间将额外始终提供以下环境变量:
CI:trueDENO_DEPLOY:true- 表示代码正在 Deno Deploy 中运行。DENO_DEPLOY_ORGANIZATION_ID:拥有该应用的组织的 ID(UUID)。DENO_DEPLOY_ORGANIZATION_SLUG:拥有该应用的组织的 slug(用于 URL 的人类可读标识符,在创建组织时设置)。DENO_DEPLOY_APPLICATION_ID:应用的 ID(UUID)。DENO_DEPLOY_APPLICATION_SLUG:应用的 slug(用于 URL 的人类可读标识符,在创建应用时设置,或之后可在应用设置中更改)。DENO_DEPLOY_BUILD_ID:当前运行的构建 ID。
构建器在构建过程中可用的资源:
- 2 个 vCPU
- 3 GB 内存(Pro 计划下可增加至 4 GB)
- 8 GB 存储空间