部署指南
同一份靜態網站,部署到四個平台。
npm run build 產生 dist/。頁面、搜尋及本地 JavaScript 動態互動無需網站後端。
Cloudflare 使用 wrangler.jsonc 的純靜態資源託管;Vercel 使用 vercel.json;騰訊 EdgeOne Pages 使用 edgeone.json;阿里雲 ESA Pages 使用 esa.jsonc。建置命令均為 npm run build,輸出目錄均為 dist。
Vercel 和 EdgeOne 支援儲存庫部署按鈕。ESA 使用儲存庫匯入或官方 CLI;設定平台帳號後執行一條部署命令。也可設定儲存庫 Secrets 後執行手動部署工作流程。
選擇部署平台npm run deploy:cloudflare
npm run deploy:vercel
npm run deploy:edgeone -- -n my-site
npm run deploy:esa -- --name my-site
在 config.yml 的 plugins.consent.services 註冊服務。external-api 使用 backendUrl;external-widget 使用 backendUrl 和同服務來源的 moduleUrl,模組匯出 mount 函式。
每項服務填寫唯一 ID、名稱、用途、資料類別、接收者、保留期限與 HTTPS 隱私連結。多語言說明須涵蓋全部已啟用語言。先填寫真實位址和隱私責任人,再啟用服務組。
訪客明確選擇前不載入外部模組或呼叫 API。介面在訪客操作時呼叫,單純給予 consent 不會主動請求 API。位址變更使已儲存的 consent 失效。Secret 只放在獨立後端的平台設定中。
從主題原始碼呼叫已註冊 APIimport {callService} from '/edgepress/services.js';
const response = await callService('lookup', 'query', {headers: {'X-Service-Context': 'example'}});
我提问 全權負責評論前端、翻譯、樣式、登入、附件、儲存及 API。網站只提供通用服務插槽和已發布內容脈絡。
CSS、JS 與本地模組相依項使用內容雜湊命名,Cloudflare、Vercel 和 EdgeOne 快取一年。HTML 及未帶雜湊的中繼資料重新驗證,建置更新會發布新的資源位址。
ESA 繼續使用同一份雜湊資源,並在控制台設定 CSS、JS 的瀏覽器及邊緣快取一年,HTML 和未版本化 JSON 使用短快取。esa.jsonc 設定建置和靜態目錄,官方未記載與 Vercel headers 對應的設定欄位。