Repolode
cloudflare

cloudflare/workerd

基于 Cloudflare Workers 同款代码的 JavaScript/Wasm 服务端运行时,可用于自托管与本地开发。

Star
9,036
Fork
796
未关闭 Issue
813
最近提交
5小时前

这是什么?

workerd 是一个服务端运行时,可以执行为 Cloudflare Workers 编写的 JavaScript 和 WebAssembly 代码。它既能作为应用服务器自托管 Workers 应用,也能作为本地开发和测试工具,或者作为可编程的正向/反向 HTTP 代理,用来拦截、修改和路由网络请求。

应用可以拆分为彼此解耦的 nanoservice,它们在同一线程和进程内互相调用。资源通过 Cap'n Proto 配置文件中的 capability bindings 连接,而不是依赖全局命名空间。内置 API 遵循 fetch() 等 Web 平台标准,每个版本都对应一个兼容性日期,可以模拟历史版本的 API 行为。

项目使用 C++ 编写,通过 Bazel 构建,预编译二进制通过 npm 分发。官方测试覆盖 Linux、macOS 和 Windows,并可通过 MINIFLARE_WORKERD_PATH 环境变量与 Wrangler 配合做本地开发。项目明确说明它本身不是加固的沙箱,运行不可信代码时应放在虚拟机等隔离环境中。

核心功能

  • 01运行为 Cloudflare Workers 编写的 JavaScript 和 Wasm 代码。
  • 02将应用拆分为可在同一进程内调用的 nanoservice。
  • 03使用 Cap'n Proto 配置文件和 capability bindings 连接资源。
  • 04支持兼容性日期,可模拟历史版本的 API 行为。
  • 05可作为正向或反向的可编程 HTTP 代理运行。
  • 06支持通过 --socket-fd 继承 systemd 提供的套接字。

适用场景

  • 自托管原本为 Cloudflare Workers 设计的应用。
  • 配合 Wrangler 在本地开发和测试 Workers 代码。
  • 构建可编程的 HTTP 代理,用于修改或路由请求。

快速上手

  1. 1

    使用 Bazel 构建 workerd 二进制文件

    bazel build //src/workerd/server:workerd
  2. 2

    编写配置文件(例如 my-config.capnp),定义服务和套接字

  3. 3

    使用 workerd 运行你的配置

    workerd serve my-config.capnp

使用前须知

  • workerd 不是经过加固的沙箱,运行不可信代码时需要放在虚拟机或其他安全沙箱中。
  • 从源码构建需要较大的工具链,例如 Linux 上的 clang 22+、libc++ 22+ 和 LLD 22+,或 macOS 上的 Xcode 16.3。
  • 官方仅在 Linux、macOS 和 Windows 的 x86-64 与 arm64 架构上测试。

标签

常见问题

workerd 是什么?
基于 Cloudflare Workers 同款代码的 JavaScript/Wasm 服务端运行时,可用于自托管与本地开发。 workerd 是一个服务端运行时,可以执行为 Cloudflare Workers 编写的 JavaScript 和 WebAssembly 代码。它既能作为应用服务器自托管 Workers 应用,也能作为本地开发和测试工具,或者作为可编程的正向/反向 HTTP 代理,用来拦截、修改和路由网络请求。
workerd 可以免费使用吗?用的什么许可证?
workerd 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
workerd 还在维护吗?
活跃维护中。workerd 最近一次提交是在 2026年10月21日。
workerd 适合用来做什么?
自托管原本为 Cloudflare Workers 设计的应用。 配合 Wrangler 在本地开发和测试 Workers 代码。 构建可编程的 HTTP 代理,用于修改或路由请求。
workerd 怎么安装和运行?
使用 Bazel 构建 workerd 二进制文件: bazel build //src/workerd/server:workerd 编写配置文件(例如 my-config.capnp),定义服务和套接字 使用 workerd 运行你的配置: workerd serve my-config.capnp
在哪里获取 workerd?
源代码和安装说明在 GitHub 上:https://github.com/cloudflare/workerd

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目