EmDash 是 Cloudflare 于 2026 年 4 月发布的开源内容管理系统(CMS),被称为 WordPress 的”精神继承者”。它完全使用 TypeScript 编写,基于 Astro 6 框架构建,专为 serverless 架构设计。

本文将指导你使用官方推荐的方式创建 EmDash 项目并部署到 Cloudflare Workers。


EmDash 核心特性

  • 完全 TypeScript:端到端类型安全
  • 基于 Astro 6:现代化的内容驱动网站框架
  • 插件沙箱隔离:每个插件运行在独立的 Worker Isolate 中,解决了 WordPress 插件安全问题
  • Serverless 架构:自动扩缩容,按实际使用付费
  • 内置 x402 支付:原生支持 AI 时代的内容付费
  • MIT 许可证:完全开源,可自由使用和修改

前置条件

  1. Node.js >= 18.x(推荐 20.x 或更高版本)
  2. pnpm (推荐) 或 npm
  3. Cloudflare 账户(免费账户即可,无需信用卡)
  4. Git(可选,用于版本控制)

一、创建项目

方式 1: 使用 CLI 创建(推荐)

这是最简单快捷的方式:

# 创建新项目(交互式)
npm create emdash@latest

# 或直接指定项目名称
npm create emdash@latest my-blog

CLI 会引导你完成以下步骤:

  1. 选择模板类型(blog、marketing、portfolio 或 starter)
  2. 配置项目名称和基本设置
  3. 自动安装依赖

可用模板:

  • blog - 经典博客模板(推荐个人博客使用)
  • marketing - 营销落地页模板
  • portfolio - 作品集展示模板
  • starter - 空白起点(适合完全自定义)

方式 2: 从 Cloudflare Dashboard 创建

  1. 登录 Cloudflare Dashboard
  2. 进入 Workers & Pages 页面
  3. 点击 Create Application
  4. 选择 EmDash 模板
  5. 按照向导完成配置和部署

二、本地开发

EmDash 支持完全离线的本地开发,使用 SQLite 数据库,无需连接 Cloudflare。

# 进入项目目录
cd my-blog

# 安装依赖
pnpm install

# (可选)填充示例数据
pnpm seed

# 启动开发服务器
pnpm dev

本地开发环境特点:

  • 使用 SQLite 数据库(无需配置)
  • 图片存储在本地磁盘
  • 支持热重载(Hot Module Replacement)
  • 无需 Cloudflare 账户即可开发

访问地址:

默认管理员账户:

  • 首次访问后台时,系统会引导你创建管理员账户
  • 使用 Passkey 认证(无需密码,更安全)

三、部署到 Cloudflare Workers

方式 A: 一键部署(最简单)

通过 Cloudflare Dashboard:

  1. 将代码推送到 GitHub 或 GitLab
  2. 登录 Cloudflare Dashboard
  3. 进入 Workers & PagesCreate Application
  4. 选择 Connect to Git
  5. 授权并选择你的 EmDash 仓库
  6. Cloudflare 会自动检测 EmDash 项目并配置构建设置
  7. 点击 Save and Deploy

自动配置内容:

  • D1 数据库(用于存储内容)
  • R2 存储桶(用于媒体文件)
  • KV 命名空间(用于会话管理)
  • 环境变量绑定

方式 B: 使用 Wrangler CLI(推荐开发者)

1. 安装 Wrangler

# 全局安装
npm install -g wrangler

# 或使用 pnpm
pnpm add -g wrangler

2. 登录 Cloudflare

wrangler login

这会打开浏览器窗口,要求你授权 CLI 访问你的 Cloudflare 账户。

3. 创建 Cloudflare 资源

EmDash 需要三种 Cloudflare 资源:

# 1. 创建 D1 数据库(用于存储内容)
wrangler d1 create emdash-db

# 2. 创建 R2 存储桶(用于媒体文件)
wrangler r2 bucket create emdash-media

# 3. 创建 KV 命名空间(用于会话管理)
wrangler kv:namespace create SESSIONS

记录每个命令输出的 ID,后面配置时需要用到。

4. 配置 wrangler.toml

在项目根目录创建或编辑 wrangler.toml

name = "my-blog"
main = "./dist/_worker.js"
compatibility_date = "2026-04-01"

# D1 数据库绑定
[[d1_databases]]
binding = "DB"
database_name = "emdash-db"
database_id = "你的数据库ID"

# R2 存储桶绑定
[[r2_buckets]]
binding = "MEDIA"
bucket_name = "emdash-media"

# KV 命名空间绑定
[[kv_namespaces]]
binding = "SESSIONS"
id = "你的KV命名空间ID"

5. 构建并部署

# 构建项目
pnpm build

# 部署到 Cloudflare Workers
wrangler deploy

部署成功后会显示你的网站 URL!


四、配置自定义域名

通过 Cloudflare Dashboard(推荐)

  1. 确保你的域名已添加到 Cloudflare(免费)
  2. 进入 Workers & Pages → 选择你的项目
  3. SettingsCustom domainsAdd custom domain
  4. 输入域名(如 blog.example.com
  5. Cloudflare 自动配置 DNS 和 SSL 证书

SSL/TLS:

  • Cloudflare 自动提供免费 SSL 证书
  • 自动续期,无需手动配置
  • 支持 HTTPS 自动重定向

五、从 WordPress 迁移

EmDash 提供两种 WordPress 迁移方式:

方式 1:WXR 文件导入

  1. 在 WordPress 后台:工具导出 → 选择”所有内容”
  2. 下载 WXR 文件
  3. 在 EmDash 后台 /admin导入 → 上传 WXR 文件
  4. 系统会自动导入文章、页面和媒体文件

方式 2:EmDash Exporter 插件(推荐)

  1. 在 WordPress 安装 EmDash Exporter 插件
  2. 插件会创建一个安全的导出端点
  3. 在 EmDash 后台输入 WordPress 站点 URL 和应用密码
  4. 直接拉取所有内容(适合大型网站)

总结

恭喜!你已经学会了如何使用 EmDash 搭建博客。主要步骤回顾:

  1. ✅ 使用 npm create emdash@latest 创建项目
  2. ✅ 本地运行 pnpm dev 开发和测试
  3. ✅ 使用 wrangler deploy 部署到 Cloudflare
  4. ✅ 配置自定义域名(可选)

下一步:

  • 在管理后台创建更多内容
  • 自定义主题样式
  • 开发自定义插件
  • 配置 CI/CD 自动部署(可选)

需要帮助? 查阅我们的完整文档或在 GitHub 提问。


相关文章: