Skip to main content
On this page

使用 Wrangler 将 Deno 部署到 Cloudflare Workers

Cloudflare Workers 允许你在 Cloudflare 的边缘网络上运行 JavaScript。

Wrangler 是 Cloudflare 为其开发者平台提供的官方 Node.js CLI。在本教程中,我们将使用 Deno 中的 Wrangler 部署一个 Cloudflare Worker。

Denoflare 是一款对 Deno 友好的第三方工具,保证可以在 Deno 上运行,但与 Wrangler 不同,它无法保证能够正确利用 Cloudflare 的各项功能。如果你想使用 denoflare,请参考 Cloudflare Workers 教程

设置 wrangler Jump to heading

首先,将 wrangler npm 模块添加到你的项目中。

deno add npm:wrangler

接下来,创建 wrangler.json。由于 wrangler 的初始化脚本会生成许多仅对 Node.js 必要的文件,我们将手动编写它。 因为 JSON schema 默认会引用 node_modules,所以我们将把它配置为引用 unpkg.com 上的 schema。

{
  "$schema": "https://www.unpkg.com/wrangler/config-schema.json",
  "name": "deno-wrangler",
  "main": "src/mod.ts",
  "compatibility_date": "2026-04-18",
  "observability": {
    "enabled": true
  }
}

另外,更新 deno.json,添加调用 wrangler 功能的命令。devstart 命令有所重叠,但这是为了与 wrangler 为 Node.js 环境生成的内容保持一致。

{
  "tasks": {
    "deploy": "deno --allow-env --allow-run npm:wrangler deploy",
    "dev": "deno npm:wrangler dev",
    "start": "deno npm:wrangler dev",
    "cf-typegen": "deno npm:wrangler types"
  }
}

最后,执行 cf-typegen 命令,自动生成类型定义文件 worker-configuration.d.ts

deno task cf-typegen

创建你的函数 Jump to heading

现在,在 src/mod.ts 中创建你的 worker 脚本。它需要导出一个包含 fetch 处理器的对象,以满足上一节生成的 worker-configuration.d.ts 所定义的 Cloudflare Module Worker API。

export default {
  async fetch(req) {
    return new Response("Hello World");
  },
} satisfies ExportedHandler<Env>;

设置构建 Jump to heading

Wrangler 内置了由 esbuild 驱动的构建系统,但默认是为 Node.js 配置的。由于这与 Deno 的模块解析机制不兼容,你必须自行设置构建环境并配置 自定义构建

首先,下载 esbuild 和官方的 Deno esbuild 插件。

deno add npm:esbuild jsr:@deno/esbuild-plugin

接下来,在 build.ts 中创建一个构建脚本。这将把 src/mod.ts 打包成 dist/server.js 中的单个 JavaScript 文件。

import * as esbuild from "esbuild";
import { denoPlugin } from "@deno/esbuild-plugin";

await esbuild.build({
  entryPoints: ["src/mod.ts"],
  outfile: "dist/server.js",
  format: "esm",
  bundle: true,
  minify: true,
  treeShaking: true,
  plugins: [
    denoPlugin(),
  ],
});

await esbuild.stop();

然后,我们将在 deno.json 中设置构建脚本执行任务。

{
  "tasks": {
    "build": "deno run -REW --allow-run build.ts"
  }
}

最后,编辑 wrangler.json,将其设置为在部署期间运行构建任务,并将输出文件配置为入口点。

{
  "$schema": "https://www.unpkg.com/wrangler/config-schema.json",
  "name": "deno-wrangler",
  "main": "dist/server.js",
  "compatibility_date": "2026-04-18",
  "observability": {
    "enabled": true
  },
  "build": {
    "command": "deno task build"
  }
}

部署 Jump to heading

完成 wrangler 配置后,你可以通过执行 deploy 命令,将你的 worker 部署到 Cloudflare 边缘网络。

deno task deploy

Wrangler 会自动运行你的 build.ts 脚本来打包应用,然后安全地将生成的 dist/server.js 文件发布到 Cloudflare Workers。完成后,Wrangler 会输出你的 worker 托管的在线 URL。

Last updated on

你找到了你需要的东西吗?

编辑此页面
隐私政策