Cloudflare
更新于 2026年11月12日
Cloudflare Workers 可以直接提供静态资源目录:无需额外的计算资源,也无需 SPA 垫片。livemark.dev 就是这样发布的,同样结构的 wrangler.jsonc 适用于任何 Livemark 站点。
构建站点
livemark build输出位于 .livemark/build/client/。
配置 wrangler.jsonc
将以下内容放到项目根目录:
{
"name": "my-docs",
"compatibility_date": "2026-04-01",
"workers_dev": true,
"assets": {
"directory": ".livemark/build/client",
},
}关键在于两个字段:
| 字段 | 作用 |
|---|---|
assets.directory | 让 Wrangler 指向 Livemark 的构建输出。每个文件都按原样提供。 |
workers_dev | 测试期间为你提供一个 <name>.<account>.workers.dev 预览 URL。 |
从本机部署
livemark build
wrangler deploy首次运行时会提示你执行 wrangler login,以授权访问你的 Cloudflare 账户。
使用 GitHub Actions 部署
name: deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
cache: pnpm
node-version: 24
- run: pnpm install
- run: pnpm livemark build
- uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}在 My Profile → API Tokens 中创建一个限定权限的 API 令牌(“Edit Cloudflare Workers” 模板恰好授予所需权限),并将这两个值保存为仓库密钥。
自定义域名
当你的域名区域(zone)托管在 Cloudflare 上后,添加一个 routes 块:
{
"name": "my-docs",
"compatibility_date": "2026-04-01",
"assets": { "directory": ".livemark/build/client" },
"routes": [{ "pattern": "docs.example.com", "custom_domain": true }],
}custom_domain: true 会让 Cloudflare 配置一个托管域名:DNS、证书和路由都会自动处理。在 livemark.config.ts 中将 site 设置为同一域名,使 sitemap 和 RSS 订阅源中的绝对 URL 保持一致。
面向智能体的 Markdown
AI 智能体通过发送 Accept: text/markdown 来请求页面的 Markdown 版本。静态资源总是返回 HTML,因此需要在你的域名区域中添加一条 URL Rewrite Rule,把这类请求指向页面的 Markdown 副本。URL Rewrite Rules 在所有套餐(包括免费套餐)中均可用,站点也依然保持完全静态。
在控制台中打开你的域名,进入 Rules → Overview → Create rule → URL Rewrite Rule,然后填写:
| 字段 | 值 |
|---|---|
| Rule name | Markdown for agents |
| If incoming requests match | Custom filter expression(见下) |
| Path | Rewrite to → Dynamic → concat(http.request.uri.path, "index.md") |
| Query | Preserve |
any(http.request.headers["accept"][*] contains "text/markdown") and ends_with(http.request.uri.path, "/")页面 URL 以 / 结尾,因此该规则只作用于页面。对 /guide 的请求会先被重定向到 /guide/,然后再被重写。静态资源会以 text/markdown 类型提供 .md 文件,因此响应类型无需额外规则。
另请参阅
用 ❤ 和 Livemark 构建