扩展构建,连接服务

扩展构建,连接服务

可信插件在 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/<平台名>。