← Cloudflare Workers / workers / configuration / sites
Начало с имеющегося
Workers Sites требует Wrangler ↗ : обязательно используйте последняя версия.
Чтобы развернуть уже существующий проект статического сайта, начните с готового сайта. Workers Sites работает со всеми генераторами статических сайтов, например:
- Hugo ↗
- Gatsby ↗, требует Node
- Jekyll ↗, требует Ruby
- Eleventy ↗, требует Node
- WordPress ↗ (см. руководство по развёртывание статических сайтов WordPress с помощью Pages)
Начало работы
-
Выполните
wrangler initкоманду в корне каталога проекта, чтобы создать базовый Worker:wrangler init -yЭта команда добавляет и обновляет следующие файлы:
wrangler.jsonc: Файл, содержащий конфигурацию проекта.package.json: WranglerdevDependenciesдобавлены.tsconfig.json: Добавляется, если его еще нет, чтобы можно было писать Worker на TypeScript.src/index.ts: Базовый Cloudflare Worker, написанный на TypeScript.
-
Добавьте каталог сборки/вывода своего сайта в файл Wrangler:
{ "site": { "bucket": "./public" // <-- Add your build directory name here. } }[site] bucket = "./public"Ниже перечислены каталоги по умолчанию для самых популярных генераторов статических сайтов:
- Hugo:
public - Gatsby:
public - Jekyll:
_site - Eleventy:
_site
- Hugo:
-
Установите
@cloudflare/kv-asset-handlerпакет в своём проекте:npm i -D @cloudflare/kv-asset-handler -
Замените содержимое
src/index.tsследующим фрагментом кода:
import { getAssetFromKV } from "@cloudflare/kv-asset-handler";
import manifestJSON from "__STATIC_CONTENT_MANIFEST";
const assetManifest = JSON.parse(manifestJSON);
export default {
async fetch(request, env, ctx) {
try {
// Add logic to decide whether to serve an asset or run your original Worker code
return await getAssetFromKV(
{
request,
waitUntil: ctx.waitUntil.bind(ctx),
},
{
ASSET_NAMESPACE: env.__STATIC_CONTENT,
ASSET_MANIFEST: assetManifest,
},
);
} catch (e) {
let pathname = new URL(request.url).pathname;
return new Response(`"${pathname}" not found`, {
status: 404,
statusText: "not found",
});
}
},
};import { getAssetFromKV } from "@cloudflare/kv-asset-handler";
addEventListener("fetch", (event) => {
event.respondWith(handleEvent(event));
});
async function handleEvent(event) {
try {
// Add logic to decide whether to serve an asset or run your original Worker code
return await getAssetFromKV(event);
} catch (e) {
let pathname = new URL(event.request.url).pathname;
return new Response(`"${pathname}" not found`, {
status: 404,
statusText: "not found",
});
}
}-
Запустите
wrangler devилиnpx wrangler deployчтобы предварительно просмотреть или развернуть ваш сайт на Cloudflare. Wrangler автоматически загрузит ресурсы, найденные в настроенном каталоге.npx wrangler deploy -
Разверните ваш сайт в пользовательский домен который принадлежит вам и уже подключён как зона Cloudflare. Добавьте
routeсвойство в файл Wrangler.{ "route": "https://example.com/*" }route = "https://example.com/*"
Подробнее о настройка вашего проекта.