搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

cloudflare/workerd

运维与部署

用于自托管 Cloudflare Workers 风格应用、本地开发与可编程 HTTP 代理的 JavaScript/Wasm 服务端运行时。

9,130
824
C++
Apache-2.0
创建于 4 年前

项目介绍

workerd 是与 Cloudflare Workers 同源代码构建的 JavaScript/Wasm 服务端运行时,不是 CLI 或 GUI 工具。它可以作为应用服务器自托管面向 Workers 的应用,也可以作为本地开发和测试 Workers 代码的运行时,或作为可编程的正向/反向 HTTP 代理来拦截、修改和路由请求。

运行时的几个设计选择会直接影响使用方式:内置 API 基于 Web 平台标准(如 fetch());应用可拆成在同一线程和进程内运行的 nanoservice;配置通过能力绑定连接服务与外部资源,而不是全局命名空间;版本号是日期,对应该版本支持的最高兼容日期,因此旧 Workers 代码可以按过去日期的 API 行为运行。

快速使用

仓库给出的构建方式是 Bazel。Linux 构建会自行下载 LLVM 工具链和 Debian sysroot;macOS 需要 Xcode 26.6(macOS 26 或更高);Windows 需要先通过 winget 安装依赖,并按构建说明完成 Bazel 初始化。准备好后,在仓库根目录运行:

bazel build //src/workerd/server:workerd

可加 --config=release 构建发布版本;若装有较新的 clang,可用 --config=thin-lto 构建性能更好的版本。产物位于 bazel-bin/src/workerd/server/workerd。

接着创建 Cap'n Proto 配置文件,声明一个 worker 和一个 HTTP socket,并准备 hello.js。最小 worker 通过 fetch 返回响应:

addEventListener("fetch", event => {
  event.respondWith(new Response("Hello World"));
});

配置里用 serviceWorkerScript = embed "hello.js" 引用脚本,设置 compatibilityDate,并把名为 http 的 socket 绑定到 *:8080。然后启动:

workerd serve my-config.capnp

简单项目也可使用 workerd serve wrangler.jsonc;main 会用 esbuild 打包,仅支持 name、main、compatibility_date、compatibility_flags、vars、durable_objects、exports、migrations、no_bundle、$schema 这些字段。npm 也提供预编译二进制,可通过 npx workerd ... 使用。

本地开发与部署

配合 Wrangler(v3 及以上)和 Miniflare 使用本地构建的二进制时,把 MINIFLARE_WORKERD_PATH 指向构建产物,再运行 wrangler dev。生产环境 README 给出了 systemd 示例:socket 单元打开 80 和 443 端口,service 单元以非特权用户运行 workerd serve,并通过 --socket-fd http=3 --socket-fd https=4 继承这两个 socket。

使用约束

workerd 会隔离每个 Worker 可访问的配置资源,但项目明确说明它本身不是加固沙箱;如果要运行可能恶意的代码,需要放在虚拟机等外层安全沙箱中。Cloudflare 的托管 Workers 服务另有额外的纵深防御。

测试覆盖的平台是 Linux、macOS 的 x86-64 和 arm64,以及 Windows 的 x86-64。npm 预编译二进制要求 Linux 使用 glibc 2.35+,macOS 13.5+ 且安装 Xcode 命令行工具,CPU 为支持 SSE4.2 和 CLMUL 的 x86-64,或支持 CRC 的 arm64。项目采用 Apache-2.0 许可证。配置格式为 Cap'n Proto,参考文档写在 workerd.capnp 的注释中,samples 目录有示例配置。

HotRepo 点评

站内仅记录到 2026-11-04 的 C++ 日榜快照,当天排名第 9、新增 9 Star;单条记录不足以判断趋势。2022 年 Hacker News 上关于 Workers 运行时开源的讨论获得 27 points、2 comments,其中一位评论者指出它与另一条链接博客背景的讨论重复。对读者更有参考价值的是,这个项目长期作为 Workers 的开源实现存在,但仅凭这次快照无法说明它当前的使用情况。

项目源码与说明

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

OS Workerd, Cloudflare's JavaScript/WASM Runtime
▲ 27 · 2 条评论 · 2022年9月27日
Cloudflare workers is adopting Ada URL parser
▲ 2 · 0 条评论 · 2023年10月5日