@devframes/plugin-a11y

中文文档
1.3.3发布于 2026/11/10MITTypeScriptES Module构建来源已验证近 30 天下载 9343

内建的devframe用轴来审计用户应用,并突出页面中的访问问题.

中文使用文档
文档目录4 节
  1. 如何运作
  2. 配置
  3. 运行演示
  4. 文件地图

@devframes/plugin-a11y (英语)

实验 这个devframe是实验性的,可能会在不发生重大版本突起的情况下改变,直到 它稳定.

一名无障碍视察员利用 副总裁它运行 轴核 针对用户应用程序和 显示在 a 固态 面板 :

  • 了解路线的跟踪: 桶内违规 location.pathname 和音轨 在您浏览用户应用程序( 历史- API 补丁、 框架中立) 时, 它们会持续 内 sessionStorage 因此历史在标签会话中继续重载.
  • 盘子+分组违规: 一个 Dashboard 标签( 总数、 严重性) 分类、每行盘点、扫描控制)和违规标签列表 每个有轨电车路线, 分组, 并标出活动路线 .
  • 选择 + 突出显示: 徘徊预览违法元素;勾选 变量的复选框选择它,使牌具有不同的状态并绘制 全球数字徽章覆盖了页面中的所有元素. <html>编号 :<body> 目标得到一个角通知 而不是一个取景器填充环.
  • 生成固定提示: 一个导航按钮收集选定的违反(规则) 元数据、 WCAG 标记、 文档以及每个元素的选取/标记/失败摘要, 按路由分组) 在一个对话框中组合成一个已粘贴准备的 AI 提示 .
  • 恒定扫描: 一个DOM MutationObserver 加减 鼠标/键盘/touch recans,从Dash板可切换.
  • WCAG 2.0-2.2 + 最佳做法: 扩展轴标签集,并有最佳做法 规则标记和可过滤.
  • 控制台记录:新发生的侵犯事件被记录(daddup)到 浏览器控制台.

扫描 + 突出显示环路的工作原理相同 服务器或作为烤制的静态构建.

如何运作

3个,其中2个是浏览器侧:

块运行在作用
页面脚本 (单位:千美元)src/inject(中文(简体) )用户应用程序的页面运行轴核、 轨迹路径、 拥有聚合状态、 绘制预览 + 被绑定的环
小组讨论会 (单位:千美元)src/spa(中文(简体) )脱衣舞女实心SPA: Dashboard + 分组违规,火灾预览/pin/rescan
节点 (单位:千美元)src/index.ts, (中文(简体) ), src/node, (中文(简体) ), src/rpc(中文(简体) )节点侧get-config RPC(影响分类学+运行时配置):活于dev中,在静态建筑中烘烤

页面脚本和面板在 deframe 的页面内聊天 (单位:千美元)devframe/in-page-channel, (中文(简体) ), 合同 src/shared/protocol.ts),而不是编剧 RPC后端. 就是这个让直播循环继续运转 两种模式: 无 一半需要服务器才能到达另一半, 只有同一来源的握手在同一个 选项卡。 页面脚本拥有权威路由 ~ 报告映射作为频道的 共享状态, 它被重放到后加入面板中, 并在每个面板上作为补丁流出 改变,所以面板保持 它的纯质。 副总裁 RPC在顶上搭载了数据模型; get-config 是一个 static 函数,所以 解决 WebSocket in dev 和从静态建筑中烤起的垃圾堆 面板将其运行时配置切片转发到频道上的页面脚本,保留 页面脚本本身没有RPC依赖性.

devframe 故意不提供用户应用程序的 DOM 访问权限,所以 页面脚本是作者提供的桥接进入用户应用程序的页面. 在一个中心 页面脚本是 a11y 的码头 客户端脚本,定义通过 因此,枢纽服务 相同的来源和 devframes: ['@devframes/plugin-a11y'] 工作时没有主机接线。 枢纽的客户端运行时间( E)createDevframeClientRuntime 从 @devframes/hub/client)然后将其导入主机页面并调用默认值 以客户端字符上下文导出。 一个主机也可以为模块本身服务(例如. 通过 /@fs/… 以附加方式 a11yClientScriptBundlePath 作为每个峰值 clientScript。由此推导,页脚本也 将活动路线扫描镜像到中心 消息种子: 一个摘要条目 通过装载 + 闲置的生命周期 + 每个违反规则的条目, 带有撞击图级、作为标签的WCAG标签和首个违法者 元素的选择器和边框(由 @devframes/plugin-messages 何时 中心将它挂起。 每个条目还附有 导航动作: 点击它 在信件面板中激活 a11y 码头(hub:docks:activate) 深相联 到规则+路由(或Dashboard,用于摘要)。 两个最小的枢纽实例 完全这样。 在中心外,一个 <script type="module"> 用于同一捆绑的工作; 下面的演示 显示它( 没有中枢上下文, 因此种子镜只保留 ) .

配置

将选项传递到 createA11yDevframe() (从地面穿过) get-config所以他们 到达面板和页脚本:

createA11yDevframe({
  autoScan: true, //         rescan on debounced interaction (default true)
  logIssues: true, //        log new violations to the console (default true)
  defaultHighlight: false, // auto-pin a route's violations on first scan (default false)
  axe: {
    tags: [
      'wcag2a',
      'wcag2aa',
      'wcag21aa',
      'wcag22aa',
      'best-practice'
    ],
    runOptions: {}, //       extra axe `run` options merged over the defaults
  },
})

运行演示

演示为有意中断的主机页面和面板服务 一个 来源 所以他们分享频道.

pnpm -C plugins/a11y build       # build the panel + the page-script bundle
pnpm -C plugins/a11y demo        # dev: live WebSocket RPC → http://localhost:4477/

pnpm -C plugins/a11y cli:build   # bake the static deploy (dist/static)
pnpm -C plugins/a11y demo:build  # static: baked RPC dump, no server

打开 URL, 然后在面板中任意一行徘徊, 并在页面中显示匹配元素 获得焦点环(并滚动到屏幕外的视图). 两种演示模式 行为一致; 面板 websocket 编号 : static 标记是唯一的告诉.

独立, 没有用户应用程序 :

pnpx @devframes/plugin-a11y      # the published package, panel only, at /__devframes_plugin_a11y/
pnpm -C plugins/a11y dev         # from source: same, at /__devframes_plugin_a11y/

文件地图

路径导出目的
src/index.ts.createA11yDevframe() (同时也是默认导出),宣布页面脚本为它的码头客户端脚本; a11yClientScriptBundlePath 是那个模块吗
src/node/index.ts/nodesetupA11y(ctx, options?) 用运行时配置注册 RPC 函数
src/cli.ts/clicreateA11yCli() 备份 devframes_plugin_a11y 选项
src/client/index.ts/clientconnectA11y(),一个已键入的浏览器 RPC 客户端包
src/rpc/内部get-config 静态 RPC + 类型安全客户登记册
src/shared/protocol.ts内部页面脚本 qq 面板在页面中的频道合同 (A11yChannelProtocol(中文(简体) )
src/inject/内部页面脚本(轴扫描、突出显示、中枢信息镜像) ~ dist/inject/inject.js
src/spa/内部硬面板 SPA − assets-pkg/dist (船舶在 @devframes/plugin-a11y--assets(中文(简体) )
demo/内部同源主机页面+服务器(dev+静态模式)
tests/内部dev-server RPC + 静态建设垃圾堆

版本与发布记录

@devframes/plugin-a11y 共发布 68 个版本,首次发布于 2026/07/06;过去 12 个月发布了 68 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.3.3latest2026/11/101 天前
1.3.22026/11/029 天前
1.3.12026/11/0110 天前
1.3.02026/10/3112 天前
1.2.62026/10/1924 天前
1.2.52026/10/1428 天前

关于 @devframes/plugin-a11y 的常见问题

@devframes/plugin-a11y 是什么?

内建的devframe用轴来审计用户应用,并突出页面中的访问问题.

如何安装 @devframes/plugin-a11y?

在项目目录运行 npm install @devframes/plugin-a11y,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:devframe(1.3.3)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 devframes_plugin_a11y,可以用 npx devframes_plugin_a11y 直接运行。

@devframes/plugin-a11y 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@devframes/plugin-a11y 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@devframes/plugin-a11y 可以商用吗?

@devframes/plugin-a11y 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@devframes/plugin-a11y 的下载量有多少?

根据 npm 官方下载统计,@devframes/plugin-a11y 在 2026/10/12 – 2026/11/10 这 30 天内被下载 9,343 次,日均约 311 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@devframes/plugin-a11y 还在维护吗?

最新版本 1.3.3 发布于 2026/11/10(1 天前);至今共发布 68 个版本,其中过去 12 个月发布了 68 个;首次发布于 2026/07/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。