擴展建置,連接服務

擴展建置,連接服務

可信外掛在 Node.js 建置時執行。瀏覽器模組與外部嵌入等待對應服務授權,靜態網站不承擔業務後端代理。

建置外掛

plugins/ 中的本地 JavaScript 模組可以轉換源文件、註冊鉤子或渲染器,並生成路由。它們擁有建置程序的許可權,因此只應載入專案負責人審查過的程式碼。

起始同意外掛會在共享頁面佈局後新增隱私面板。建置外掛屬於可信程式碼,不會作為瀏覽器指令碼釋出。

註冊路由生成器
export default function projectMeta(api) {
  api.registerGenerator('project-meta', ({ site }) => ({
    path: 'project-meta.json',
    body: JSON.stringify({
      title: site.config.site.title,
      posts: site.posts.length
    }),
    contentType: 'application/json; charset=utf-8'
  }));
}

跟蹤、統計、廣告和人機驗證

在 config.yml 的 plugins.consent.services 下新增瀏覽器供應商。每項需要唯一 ID、provider、purpose、dataCategories、recipient、retention、指向供應商當前隱私說明的 privacyUrl,以及公開站點標識。privacyUrl 必須是 HTTPS 地址。多語言欄位需使用語言對映,覆蓋已啟用的每種語言,例如 en 與 zh-CN。

可用供應商包括 Google Tag Manager 和 Meta Pixel;Cloudflare Web Analytics、Google Analytics 和百度統計;Google AdSense;以及 Cloudflare Turnstile、Google reCAPTCHA 和 hCaptcha。

plugins.consent.proposedDate 必須設定為 YYYY-MM-DD 格式的告知擬定日期。告知生效後再設定 effectiveDate;尚未生效時可以省略。修改任一日期都會使舊的同意記錄失效,並重新詢問訪客。

只有訪客接受對應整合後才會匯入供應商程式碼。首層同時提供接受和拒絕,資料詳情與逐項開關位於展開內容中。不要把 CAPTCHA 金鑰放入 config.yml 或客戶端程式碼。伺服器必須在接受表單前將每個 CAPTCHA 響應提交給供應商驗證 API。

在 config.yml 的 plugins.consent.services 註冊 external-api 或 external-widget。每項服務使用 HTTPS 位址、涵蓋全部已啟用語言的隱私說明和訪客明確選擇。

網站提供靜態前端。身分驗證、授權、驗證碼校驗、輸入驗證、儲存和速率限制由獨立服務負責。運營者 Secret 儲存在服務平台設定中。

主題原始碼從 /edgepress/services.js 匯入 callService,在訪客需要時呼叫已註冊 API。元件模組匯出 mount,並僅在同意後載入。

內容安全與維護

內建 Markdown 渲染器會清理文章輸出。自定義渲染器、外掛、主題和 static/ 中的檔案都屬於可信專案程式碼;建置或部署前應審查變更。不要將金鑰放在文章、主題或公開資源中。

edgepress iterate 會在 .edgepress/reports/ 下生成只讀維護計劃,不會修改原始檔、更新依賴或部署。edgepress security 檢查依賴安全公告。部署前請審查鎖檔案和頁面報告,並保留可用於回滾的已知穩定部署。

審查專案變更
edgepress security
edgepress iterate
edgepress check
edgepress server

在 plugins.consent.services 按服務名稱註冊。訪客未同意時不載入對應資源;同意後,可見的嵌入按需載入。登入、儲存與其他後端能力由獨立服務負責,平台入口放在 backend/<平台名>。