From 5c3d23845f764163736c90653de5fa7931582ee7 Mon Sep 17 00:00:00 2001 From: "cloudflare-workers-and-pages[bot]" <73139402+cloudflare-workers-and-pages[bot]@users.noreply.github.com> Date: Sun, 19 Jul 2026 22:04:40 +0000 Subject: [PATCH 1/2] Add Cloudflare Workers configuration --- .gitignore | 7 ++++++ astro.config.ts | 11 +++++++-- package.json | 7 ++++-- pnpm-lock.yaml | 59 ++++++++++++++++++++++++++++++++++++++++++++ public/.assetsignore | 2 ++ tsconfig.json | 7 ++++-- wrangler.jsonc | 14 +++++++++++ 7 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 public/.assetsignore create mode 100644 wrangler.jsonc diff --git a/.gitignore b/.gitignore index 00b0b43..9c040e7 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,10 @@ blob-report/ # Local agent planning state; project-level skills in .agents remain versioned. .hermes/ output/ + +# wrangler files +.wrangler +.dev.vars* +!.dev.vars.example +.env* +!.env.example diff --git a/astro.config.ts b/astro.config.ts index 3ac992e..730c5e1 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -3,12 +3,16 @@ import seoGraph from "@jdevalk/astro-seo-graph/integration"; import { defineConfig, fontProviders } from "astro/config"; import { siteDiscovery } from "./src/data/site-discovery.ts"; +import cloudflare from "@astrojs/cloudflare"; + export default defineConfig({ site: siteDiscovery.origin, output: "static", + build: { inlineStylesheets: "always" }, + integrations: [ sitemap(), seoGraph({ @@ -22,6 +26,7 @@ export default defineConfig({ validateInternalLinks: true }) ], + fonts: [ { provider: fontProviders.local(), @@ -68,5 +73,7 @@ export default defineConfig({ ] } } - ] -}); + ], + + adapter: cloudflare() +}); \ No newline at end of file diff --git a/package.json b/package.json index 634019c..18afc2d 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "astro dev", "build": "astro build", - "preview": "astro preview", + "preview": "pnpm --filter matharts-website... run build && wrangler dev", "fonts:check": "nub scripts/check-font-glyphs.ts", "fonts:update": "nub scripts/update-local-fonts.ts", "check": "astro check", @@ -14,9 +14,12 @@ "lighthouse": "node scripts/run-lighthouse.mjs", "lighthouse:check": "node scripts/run-lighthouse.mjs --check", "test:e2e": "playwright test", - "verify": "pnpm fonts:check && pnpm check && pnpm lint && pnpm format:check && pnpm test:e2e" + "verify": "pnpm fonts:check && pnpm check && pnpm lint && pnpm format:check && pnpm test:e2e", + "generate-types": "wrangler types", + "deploy": "pnpm --filter matharts-website... run build && wrangler deploy" }, "dependencies": { + "@astrojs/cloudflare": "^14.1.3", "astro": "7.1.1" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e063fcb..5c59bae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -207,6 +207,9 @@ importers: .: dependencies: + '@astrojs/cloudflare': + specifier: ^14.1.3 + version: 14.1.3(@types/node@24.13.3)(astro@7.1.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0))(esbuild@0.28.1)(wrangler@4.112.0)(yaml@2.9.0) astro: specifier: 7.1.1 version: 7.1.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0) @@ -256,6 +259,12 @@ packages: peerDependencies: typescript: ^5.0.0 || ^6.0.0 + '@astrojs/cloudflare@14.1.3': + resolution: {integrity: sha512-idZndLb/cm64JNayPepaM0Ews971KviYPIcj/xB7Pwp2RKvBjs3MePjZLE50n6EoggeWag3iAMYpAuEKs+3o5g==} + peerDependencies: + astro: ^7.0.0 + wrangler: ^4.83.0 + '@astrojs/compiler-binding-darwin-arm64@0.3.1': resolution: {integrity: sha512-IEmEF2fUIlTHtpeE/isyEGVOB14cEyh/LZOFYt6wn3jNyVpdC8aR5OZ+RzFUR/f+8ZDM1LaMwZKvoA7eMyJeFw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -353,6 +362,9 @@ packages: resolution: {integrity: sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + '@astrojs/underscore-redirects@1.0.3': + resolution: {integrity: sha512-cxnGSw+sJigBLdX4TMSZKkzV6C3gMLJMucDk2W+n281Xhie68T2/9f1+1NMNDCZsc5i0FED7Qt5I10g2O9wtZg==} + '@astrojs/yaml2ts@0.2.4': resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} @@ -452,6 +464,13 @@ packages: workerd: optional: true + '@cloudflare/vite-plugin@1.45.1': + resolution: {integrity: sha512-C+iDpO9pVH7IqrjdYtUV+obcTAdpiNk0OSinGEZZyd2ZWyGVjGk7iJ2p3xpMBpZuTa1I4hfAECNp0yN/8f3PIQ==} + hasBin: true + peerDependencies: + vite: ^6.1.0 || ^7.0.0 || ^8.0.0 + wrangler: ^4.112.0 + '@cloudflare/workerd-darwin-64@1.20260714.1': resolution: {integrity: sha512-ZWXqAN8G7Cx9hMRQuk+59ziJhR3j1F4iO+Qs8aHdfKZ3Dq5Yi/57xvkJTgCGBnW1YU/L78r8f6HEy51bwbTpNw==} engines: {node: '>=16'} @@ -3237,6 +3256,31 @@ snapshots: - prettier - prettier-plugin-astro + '@astrojs/cloudflare@14.1.3(@types/node@24.13.3)(astro@7.1.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0))(esbuild@0.28.1)(wrangler@4.112.0)(yaml@2.9.0)': + dependencies: + '@astrojs/internal-helpers': 0.10.1 + '@astrojs/underscore-redirects': 1.0.3 + '@cloudflare/vite-plugin': 1.45.1(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0))(wrangler@4.112.0) + astro: 7.1.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0) + piccolore: 0.1.3 + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0) + wrangler: 4.112.0 + transitivePeerDependencies: + - '@types/node' + - '@vitejs/devtools' + - bufferutil + - esbuild + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - utf-8-validate + - yaml + '@astrojs/compiler-binding-darwin-arm64@0.3.1': optional: true @@ -3354,6 +3398,8 @@ snapshots: is-docker: 4.0.0 package-manager-detector: 1.7.0 + '@astrojs/underscore-redirects@1.0.3': {} + '@astrojs/yaml2ts@0.2.4': dependencies: yaml: 2.9.0 @@ -3431,6 +3477,19 @@ snapshots: optionalDependencies: workerd: 1.20260714.1 + '@cloudflare/vite-plugin@1.45.1(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0))(wrangler@4.112.0)': + dependencies: + '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260714.1) + miniflare: 4.20260714.0 + unenv: 2.0.0-rc.24 + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0) + workerd: 1.20260714.1 + wrangler: 4.112.0 + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@cloudflare/workerd-darwin-64@1.20260714.1': optional: true diff --git a/public/.assetsignore b/public/.assetsignore new file mode 100644 index 0000000..1b006a0 --- /dev/null +++ b/public/.assetsignore @@ -0,0 +1,2 @@ +_worker.js +_routes.json \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index bcbf8b5..c9635bd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,6 @@ { - "extends": "astro/tsconfigs/strict" -} + "extends": "astro/tsconfigs/strict", + "include": [ + "./worker-configuration.d.ts" + ] +} \ No newline at end of file diff --git a/wrangler.jsonc b/wrangler.jsonc new file mode 100644 index 0000000..6ff89ad --- /dev/null +++ b/wrangler.jsonc @@ -0,0 +1,14 @@ +{ + "$schema": "./node_modules/wrangler/config-schema.json", + "compatibility_date": "2026-07-19", + "compatibility_flags": ["global_fetch_strictly_public"], + "name": "matharts-website", + "main": "@astrojs/cloudflare/entrypoints/server", + "assets": { + "directory": "./dist", + "binding": "ASSETS" + }, + "observability": { + "enabled": true + } +} \ No newline at end of file From 215727c684642d0f7b6f9019e4024482ae492407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E8=A1=8C=E5=AD=90?= Date: Mon, 20 Jul 2026 06:12:20 +0800 Subject: [PATCH 2/2] fix: deploy static Astro site as Workers assets --- astro.config.ts | 8 ++---- package.json | 6 ++--- pnpm-lock.yaml | 59 -------------------------------------------- public/.assetsignore | 2 -- tsconfig.json | 7 ++---- wrangler.jsonc | 21 ++++++---------- 6 files changed, 14 insertions(+), 89 deletions(-) delete mode 100644 public/.assetsignore diff --git a/astro.config.ts b/astro.config.ts index 730c5e1..9f96aec 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -3,8 +3,6 @@ import seoGraph from "@jdevalk/astro-seo-graph/integration"; import { defineConfig, fontProviders } from "astro/config"; import { siteDiscovery } from "./src/data/site-discovery.ts"; -import cloudflare from "@astrojs/cloudflare"; - export default defineConfig({ site: siteDiscovery.origin, output: "static", @@ -73,7 +71,5 @@ export default defineConfig({ ] } } - ], - - adapter: cloudflare() -}); \ No newline at end of file + ] +}); diff --git a/package.json b/package.json index 18afc2d..a74faba 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "astro dev", "build": "astro build", - "preview": "pnpm --filter matharts-website... run build && wrangler dev", + "preview": "wrangler dev", "fonts:check": "nub scripts/check-font-glyphs.ts", "fonts:update": "nub scripts/update-local-fonts.ts", "check": "astro check", @@ -15,11 +15,9 @@ "lighthouse:check": "node scripts/run-lighthouse.mjs --check", "test:e2e": "playwright test", "verify": "pnpm fonts:check && pnpm check && pnpm lint && pnpm format:check && pnpm test:e2e", - "generate-types": "wrangler types", - "deploy": "pnpm --filter matharts-website... run build && wrangler deploy" + "deploy": "pnpm build && wrangler deploy" }, "dependencies": { - "@astrojs/cloudflare": "^14.1.3", "astro": "7.1.1" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c59bae..e063fcb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -207,9 +207,6 @@ importers: .: dependencies: - '@astrojs/cloudflare': - specifier: ^14.1.3 - version: 14.1.3(@types/node@24.13.3)(astro@7.1.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0))(esbuild@0.28.1)(wrangler@4.112.0)(yaml@2.9.0) astro: specifier: 7.1.1 version: 7.1.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0) @@ -259,12 +256,6 @@ packages: peerDependencies: typescript: ^5.0.0 || ^6.0.0 - '@astrojs/cloudflare@14.1.3': - resolution: {integrity: sha512-idZndLb/cm64JNayPepaM0Ews971KviYPIcj/xB7Pwp2RKvBjs3MePjZLE50n6EoggeWag3iAMYpAuEKs+3o5g==} - peerDependencies: - astro: ^7.0.0 - wrangler: ^4.83.0 - '@astrojs/compiler-binding-darwin-arm64@0.3.1': resolution: {integrity: sha512-IEmEF2fUIlTHtpeE/isyEGVOB14cEyh/LZOFYt6wn3jNyVpdC8aR5OZ+RzFUR/f+8ZDM1LaMwZKvoA7eMyJeFw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -362,9 +353,6 @@ packages: resolution: {integrity: sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} - '@astrojs/underscore-redirects@1.0.3': - resolution: {integrity: sha512-cxnGSw+sJigBLdX4TMSZKkzV6C3gMLJMucDk2W+n281Xhie68T2/9f1+1NMNDCZsc5i0FED7Qt5I10g2O9wtZg==} - '@astrojs/yaml2ts@0.2.4': resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} @@ -464,13 +452,6 @@ packages: workerd: optional: true - '@cloudflare/vite-plugin@1.45.1': - resolution: {integrity: sha512-C+iDpO9pVH7IqrjdYtUV+obcTAdpiNk0OSinGEZZyd2ZWyGVjGk7iJ2p3xpMBpZuTa1I4hfAECNp0yN/8f3PIQ==} - hasBin: true - peerDependencies: - vite: ^6.1.0 || ^7.0.0 || ^8.0.0 - wrangler: ^4.112.0 - '@cloudflare/workerd-darwin-64@1.20260714.1': resolution: {integrity: sha512-ZWXqAN8G7Cx9hMRQuk+59ziJhR3j1F4iO+Qs8aHdfKZ3Dq5Yi/57xvkJTgCGBnW1YU/L78r8f6HEy51bwbTpNw==} engines: {node: '>=16'} @@ -3256,31 +3237,6 @@ snapshots: - prettier - prettier-plugin-astro - '@astrojs/cloudflare@14.1.3(@types/node@24.13.3)(astro@7.1.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0))(esbuild@0.28.1)(wrangler@4.112.0)(yaml@2.9.0)': - dependencies: - '@astrojs/internal-helpers': 0.10.1 - '@astrojs/underscore-redirects': 1.0.3 - '@cloudflare/vite-plugin': 1.45.1(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0))(wrangler@4.112.0) - astro: 7.1.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@24.13.3)(yaml@2.9.0) - piccolore: 0.1.3 - vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0) - wrangler: 4.112.0 - transitivePeerDependencies: - - '@types/node' - - '@vitejs/devtools' - - bufferutil - - esbuild - - jiti - - less - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - utf-8-validate - - yaml - '@astrojs/compiler-binding-darwin-arm64@0.3.1': optional: true @@ -3398,8 +3354,6 @@ snapshots: is-docker: 4.0.0 package-manager-detector: 1.7.0 - '@astrojs/underscore-redirects@1.0.3': {} - '@astrojs/yaml2ts@0.2.4': dependencies: yaml: 2.9.0 @@ -3477,19 +3431,6 @@ snapshots: optionalDependencies: workerd: 1.20260714.1 - '@cloudflare/vite-plugin@1.45.1(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0))(wrangler@4.112.0)': - dependencies: - '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260714.1) - miniflare: 4.20260714.0 - unenv: 2.0.0-rc.24 - vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.1)(yaml@2.9.0) - workerd: 1.20260714.1 - wrangler: 4.112.0 - ws: 8.21.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - '@cloudflare/workerd-darwin-64@1.20260714.1': optional: true diff --git a/public/.assetsignore b/public/.assetsignore deleted file mode 100644 index 1b006a0..0000000 --- a/public/.assetsignore +++ /dev/null @@ -1,2 +0,0 @@ -_worker.js -_routes.json \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index c9635bd..bcbf8b5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,3 @@ { - "extends": "astro/tsconfigs/strict", - "include": [ - "./worker-configuration.d.ts" - ] -} \ No newline at end of file + "extends": "astro/tsconfigs/strict" +} diff --git a/wrangler.jsonc b/wrangler.jsonc index 6ff89ad..0787940 100644 --- a/wrangler.jsonc +++ b/wrangler.jsonc @@ -1,14 +1,9 @@ { - "$schema": "./node_modules/wrangler/config-schema.json", - "compatibility_date": "2026-07-19", - "compatibility_flags": ["global_fetch_strictly_public"], - "name": "matharts-website", - "main": "@astrojs/cloudflare/entrypoints/server", - "assets": { - "directory": "./dist", - "binding": "ASSETS" - }, - "observability": { - "enabled": true - } -} \ No newline at end of file + "$schema": "./node_modules/wrangler/config-schema.json", + "name": "matharts-website", + "compatibility_date": "2026-07-19", + "assets": { + "directory": "./dist", + "not_found_handling": "404-page" + } +}