# @brandlab-digital/conformance 中文文档

规范地址：https://npmcn.com/package/%40brandlab-digital/conformance/

版本：4\.2\.2
npm 元数据更新时间：2026-11-06T10:04:26.712Z
中文译文更新时间：2026-11-08T14:03:10.104Z
软件包许可：UNLICENSED

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40brandlab-digital/conformance
原文对照：https://npmcn.com/package/%40brandlab-digital/conformance/?lang=original
项目主页：https://github.com/RomieDandan/brandlab#readme
源码仓库：https://github.com/RomieDandan/brandlab

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：4 MB，514 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：knip \>=6\.38\.0，axe-core \>=4\.10\.0，@playwright/test \>=1\.63\.0，@axe-core/playwright \>=4\.10\.0
- 首次发布：2026-05-26T03:28:46.851Z
- 最新版本发布：2026-11-06T10:04:26.537Z
- 近 30 天下载量：8035（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：118（近 12 个月 118 个）

## 中文简介

专有软件 Brandlab Digital Marketing. 版权所有。 为Brandlab客户端网站发布.

## 安装

```sh
npm install @brandlab-digital/conformance
```

也可以使用：`pnpm add @brandlab-digital/conformance`、`yarn add @brandlab-digital/conformance`、`bun add @brandlab-digital/conformance`

## README

# `@brandlab-digital/conformance`

专有软件 Brandlab Digital Marketing. 版权所有。 为Brandlab客户端网站发布.

## 服务区地图(从3.6.0起)

-   `brandlab-area-map places --out src/data/locations/siteOwnedBoundaries.json Young@2594 Cowra Cootamundra` (在悉尼和中海岸登记中心之外) 以及他们周围以共享区域图格式分布的土地,来自新南威尔士州空间 服务子站级层( 重现时的名称和邮编码; 注册位置) (b) 拒绝。 选项 : `--margin-km` (在城镇周围,默认为15个)和 `--tolerance` (米,默认为20).
-   庄园之行失败 服务区域图( Q)`<figure data-area-map>`无 标有 CC BY 边界信用, 链接为制表站 或未进入可索引目录页,且 `areaMapMaxBytes` 内在线性( 默认 60 000) ,或 `<use>` 基层文件 不回答200为 `image/svg+xml` 和它使用的团体.

## 工地系统准备就绪大门(从3.8.0开始)

一个站点通过 Site System v2 宣告 `siteSystem: { tier: 'shell' | 'enquiry' | 'full' }` 内 `brandlab.config.ts` (单位:千美元)`newBuild: true` 用于新建筑和重新设计; `samples` 增加页以检查; `labels`, (中文(简体) ), `freeQuotes`, (中文(简体) ), `thirdParties` 财务报告和审定财务报表 `phones` 记录引用标签、自由引用报价、第三方主机和额外 `tel:` 链接接受的 shell 规则; `refreshExceptions` 列出允许更经常刷新的庄园家庭 每7天,每次 `{ family, revalidateSeconds, reason, decisionId }`,用于3.13.0的W3; `replyTime` 记录a (c) 决定承诺在感谢页上不作任何答复,C7从下文3.15.0起。 没有它,门里什么都没有 块.

**C7,感谢页** (查询级):每个抽样的感谢页(a) `/thank-you`\- 风格路径或图书馆的 `ThankYou` 块)是 `noindex, follow`,有一个 `tel:` 链接(或 `<main>`并且在其回复时段说 (单位:千美元)`data-slot="reply"`),作为特定时间("在一小时内","在一到二个业务范围内"),企业将答复 日数"; `C7_REPLY_TIME`),"短"或"能尽快"等模糊的词语会失败. 当主人决定承诺 时间不多,网站记录了(3.1.5):

```ts
siteSystem: {
  tier: 'enquiry',
  replyTime: { promise: false, wording: 'We will call you back as soon as possible.', decidedBy: 'owner', decidedOn: '2026-10-24' },
},
```

C7然后接受答复时段中的措辞,而不是一个时间(与忽略大小写、间隔和标出相比), 没有它或一个仍然承诺时间的页面失败,并在它的传阅信件中列出记录的决定。 这个 措辞本身可能不包含时间(数字、分钟、小时、“同一天”、“下一天”、“工作日、, "今天","明日"; row; `decidedBy` 实值 `owner` 或者说 `romie` (为所有者)和 `decidedOn` 一个真正的约会. `{ promise: true }` 或者没有记录 保持具体的时间规则。 无索引,呼叫链接和所有其它C7检查没有变化.

-   `brandlab-ready` (之后) (中文(简体) ) `next build` 写着: `docs/ready/ready-report.md` 财务报告和审定财务报表 `.json`:每一次检查其等级,是否屏蔽此站点,状态(通过,失败,不运行,除外, n/a;通行证可能带有警告,而警告从未被挡住)和找到的东西. 检查申报的级别和级别 下方屏蔽了他们带来的释放; 无法或没有运行1号出口的屏蔽检查 缺少主页或联系页, a `--base-url` 不使用 HTML 或 a 回答样本 `brandlab.config.ts` 大门不能全读。 更高层次和以后的释放仅报告. 它阅读了Playwright JSON报告(英语:`--playwright-report`默认值 `test-results/site-system.json`; 测试 标题从检查 id 开始, `[N3] …`),将规则模块运行在样本页面上(主页、联系人、 具有代表性的路线、每条已建路线一页和 `samples`从建筑物中读取或取取 `--base-url`合并 `--findings <file>` k10和X1(宽放用具)和品牌实验室核查结果 搜索、联系和分析家庭,并尊重项目的 `exceptions` (单位:千美元)`ruleId` 是检查编号; 过期的例外不计算在内).
    
-   历程来自 `tests/e2e/site-system.spec.ts`与 JSON 记者一起进入 `test-results/site-system.json`数字 :
    
    ```ts
    import { defineBrandlabSiteSystemTests } from '@brandlab-digital/conformance/site-system-e2e'
    
    defineBrandlabSiteSystemTests({
      tier: 'full', // the tier brandlab.config.ts declares
      pages: {
        home: '/',
        money: ['/services/blocked-drains'], // C1, from the enquiry tier: service pages with the enquiry form
        contact: '/contact',
        families: ['/locations/ryde', '/blog/blocked-drain-cost-sydney'], // W9, full tier: one built page per dynamic route family
      },
    })
    ```
    
    旅行记录从发行开始(W2和W9从3.13.0)。 发布是现场安装的 Brandlab发行,从软件包中读取. json as `brandlab-ready` 读取它,一个金丝雀包含(3.1.5.0: 在它之前 travels使用兼容软件包上一个发布的版本,所以一只金丝雀没有运行它的更新的行程,同时 城门堵住了他们。 离开 `release` 出; 设置仅预览后期发行的出行. 报告时 有出行结果,但没有任何 阻断出行检查, 大门说哪一层,页面和发布它需要.
    
-   `brandlab-ready record <id> --evidence <where the proof is> [--note <text>]` 记录发射日步骤(T2, T3-R、C6、X3至X10或记录的支票(K10、X1) `docs/ready/launch.json`或人行道, 信托承接器、实用读取器、码-秒取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取 `docs/ready/human.json`。 。 。 . `brandlab-ready --launch` 也失败,直到记录每一步.
    
-   规则模块导出 a `SiteSystemRenderedRunner` 从 `@brandlab-digital/conformance/site-system` 并且现在 列入清单 `SITE_SYSTEM_RENDERED_RUNNERS`。 。 。 .
    
-   W2(壳层,从3.13.0起)在每个样本页上以390 x 844和390为单位在现场系统内运行 1440 x 900: 着陆时最多有8个预选页,12个在全卷后;没有来自页脚,页头面板, 抽屉,区域`coverage`),相邻地`nearby-areas`),地图(`area-map`, (中文(简体) ), `data-area-map`、发现者或其他服务 链接(一个站点用 `data-bl-links="area|nearby|map|finder|other-services"`),无通过 a 隐藏链接并永远不要当前页面。 页面上方压缩了两倍上方的预取字节,增加了一个警告.
    
-   `brandlab-prefetch-probe <url> [--viewport 390x844 ...] [--json] [--strict]` 当地一页 在无头 Chromium 中构建、预览或活页:页面在登陆时和完整滚动后预留 每个取景口,它们的压缩和解码字节,边缘缓存结果和W2结果. 没有请假 另一个地点,它永远不会爬行.
    

## 发布和CI工具(4.2.0)

-   **`brandlab-preview-enquiry <preview-url> [--changed-from origin/main] [--path /contact] [--field key=value]...`** 发送一个标记 测试询问(`bl_test=1`通过拉动请求的预览,当更改触及到联系人或运行时间文件时 (包装文件, `next.config`, (中文(简体) ), `vercel.json`、代理或仪器, `api/contact`,联系人配置和 表格);否则它不会发送任何信息。 它首先发布一个空的标记请求, 路由没有拒绝 发送,并且只在回答时继续 `x-brandlab-contact-mode: preview; test-inbox=brandlab` (下个地点) 4.2.0+在预览上),因此它永远无法到达客户端的收件箱. 调查使用普通措辞,必须通过 垃圾邮件过滤器,使用 [brandlabdigital.com.au 互联网档案馆的存檔,存档日期2013-12-22](mailto:info@brandlabdigital.com.au) 作为它的电子邮件。 它从4.2.2中填入了网站自己的表格:它读取了 预览的联系页( E)`--path`默认值 `/contact`),给出通常的字段测试值,任何其他需要的字段 纯值和需要选择自己的选项之一, 保留隐藏值, 将蜂蜜壶空出并发送不 字段中缺少表单(路径拒绝未知字段). `--field key=value` 设置窗体本身的一个字段; 名称 表格没有被拒绝。 在发送任何信息之前,拒绝使用其 HTML 格式的页面. 需要保护的预览 `VERCEL_AUTOMATION_BYPASS_SECRET` 在环境中。 然后确认邮件到达.
-   **`brandlab-live-check <https://www.site> --service /path --location /path [--css token]... [--vercel-project name --vercel-scope team]`** 是在发布开始后进行检查: 家, 最高服务页面, 一个位置页面 和联系回答 200, `sitemap.xml` 财务报告和审定财务报表 `robots.txt` 200个,每个编成的URL 404 `--css` 类或符号在 样式表家用链接,以及(用 Vercel CLI 签名) 生产部署,回滚部署 (单位:千美元)`vercel rollback <id>`),其运行时间错误和任何5xx来自 `/api/contact` 自此以来 `--since` (30米) (中文(简体) ). 请求是一 一次,至少相隔0.5分,于前403分止. 它从不运行页面JavaScript,所以没有GA4会话.
-   **`@brandlab-digital/conformance/playwright`** 导出 Playwright `test` 浏览器上下文屏蔽 Google 每个测试中分析、标签管理器和广告请求, `expect`, (中文(简体) ), `blockAnalytics(contextOrPage)` 一次性 脚本和 `isAnalyticsUrl`。用于任何装入一个页面,尤其是一个活页的站点拥有的规格或脚本; 共享的行程已经关闭了 .
-   **`BRANDLAB_ESTATE_SCOPE=changed`** (由CI v2通过) `brandlab-estate-scope` 随时待命 请求文件保存在页面内 ) 爬行中枢, 每种类型的第一条和最后一条路线, 每一种路线 \* 改变家庭、改变内容和数据文件的路线和20个固定种子路线 只开放改变的家庭和家园。 共享的更改保留了完整的爬行,这也运行在合并到主机上.

## 联系旅行

`defineBrandlabContactTests` 编辑 `contact` 行程 `defineBrandlabAnalyticsTests` 期待接受调查 登陆 `/thank-you`在自己的页面上确认出入证的表格 `successPath` (路径或RegExp),例如 `successPath: '/contact'`都封锁了所有离开网站的请求 包括Google的标签 一个网站需要 滚动( GSAP ScrollSmoother, Lenis) 可在 Playwright 滚动后移动窗体到提交按钮; 运行 路由宽度, 站点以本地方式滚动 : `test.use({ viewport: { width: 390, height: 844 } })`。 。 。 .

## 费用警卫(从3.13.0起)

-   **W5型战车** (静态,外壳): `vercel.json` `regions` 等号 `brandlab.config.ts` `hosting.originRegion` (赛德尼, `syd1`,当没有托管块时)。 任何其他区域需要 `origin-region-v1` 决定: `reviewBy` 最多六个月后 `decidedOn`; 检查失败一次 `reviewBy` 通过(悉尼时间)。 工程学 检查 `vercel-region` (单位:千美元)`brandlab-verify --engineering`在每一个网站的 `npm run verify`) 适用相同的 规则,日期除外:失效 `reviewBy` 永不停歇的建筑,固定或回滚.
-   **W10型导弹** (已放弃,壳体):已建成 `robots.txt` (或运行中的网站,与 `--base-url`; 预览 答无索引,或为预览所建的构件 `robots.txt` 不允许一切,不被判断)让每个搜索和回答爬行者(site-core) `BRANDLAB_SEARCH_CRAWLERS`获取 故乡和有代表性的航道,他们中没有人能延迟。 匹配用户的防火墙规则 代理人(`vercel.json` `routes` 与 `mitigate`,以及 `hosting.firewall`不得否认或质疑;费率 限制在一 是一个警告.
-   **W9 战车** (旅程,满: `defineBrandlabSiteSystemTests({ pages: { families: [...] } })` 名称 : 每页已建 动态路由家族; 一个未知的 shot 回答共享的 404, 大写 shot 也回答它或者一次重定向 (301或308)到其确切小写形式,以及 `?utm_source=x` 提供与干净的 URL 相同的可缓存页面. **W9-参数** (静态,完整):动态路径下没有页面读取 `searchParams`。 。 。 .
-   **K12- 秒数** (已放弃,满分,从3.14.0开始):交易需要在一个区(现场核心)内进行 `SECTION_TRADE_PROFILES`,用于贸易 `defineSectionOrder` 名称: 对于树, 议会的许可条 `LocalFacts` 在郊区和在郊区的服务页面, 资格和保险线 在大约页面。 这个 节载 `data-bl-slot="<slot>"`,或列表 `<slot>:no-…` 内 `data-bl-slot-skip` (一个警告,所以记录是: (已重新检查). 跳跃只从顶层的段落元素( 最外层)读取 `data-bl-section`: 一个站点 包围的元素 `LocalFacts` 在它自己的章节中隐藏跳过,页面失败,似乎没有给出任何理由. 渲染器 `LocalFacts` 本身作为被排列的区段,而不是被包装. **K13车** (投降,满,从 3.16.0:签字部分(`data-bl-section="signature"`携带 `data-bl-signature` 名字是他们的表 列表,最多在主页上列出两个,在服务页上列出一个,在其他地方没有一个(网站核心) `SIGNATURE_LIMITS`),以及 主页是那些 `strategy.ts` 记录 `look.homeSections.signatures`D4比较了真实的外观(a) 记录了一个主页没有显示是警告). K12叶片将签名放出顺序走走,从 3.16.0,警告有数据跳出上限的可选部分或推荐部分. **E1 样板** (已放弃,满分,从3.14.0开始): 外出每个位置页面 `docs/recorded-titles.json` 拥有 H1 “{Service} { Place} ” (没有“ in” , 没有“ the” ) , 并有一个首字母, 最多60个字符 (现场核心) `locationHeadingProblem`) (中文(简体) ). **地点 - INDEX** 也读作 `estate` 策略.ts(3.14.0):每个位置页 现在或者在波浪中,a `return` 波浪的页面已经在构建中, 和一个区域页面在一个郊区的弹道 将郊区发送到"{slug}- suburb";被更名的 sults 读取为它们的注册地.
-   **地产计划简介** (3.1.5.0):大门读作: `waves` 财务报告和审定财务报表 `estate` 从战略.ts 不运行它。 一个网站 用来计算它们的 `writeEstatePlanSnapshot(siteStrategy, { projectRoot, sources? })` 从 `@brandlab-digital/conformance/estate-snapshot`,从现场测试中调用 `npm run verify` 保留 `src/data/estate-plan.generated.json` 当前( 当 CI 报告时, 测试失败) `changed`; 执行 (原始内容存档于2017-03-21). the file. 文件是决定性的:按日期顺序排列的波浪,每个列表排序,没有时间戳,以及文件的散列 下级 `sources` (默认) `src/data`; 测试和 `*.generated.json` 页:1 LOC-INDEX(和L3,L6,L8)改为: 相同计划)在出现时使用快照,而LOC-INDEX在停滞时失败:散列文件已更改 因为它是写着的, 或记录是简单的数据 并说别的东西。 文字记录不需要快照.
-   **媒体快照** (3.15.0): T6读作 `src/data/media.ts` 同样的方式。 计算清单(邮件条目) 以 `writeMediaSnapshot(media, { projectRoot, sources? })` 从 `@brandlab-digital/conformance/media-snapshot` 输入 `src/data/media.generated.json`中,保持当前状态 同样的方式; T6读取了它, 并失败了当 Stale. 计算出来的没有快照的列表失败 T6 指示(在3.1.5.0之前,它没有报告任何情况,因此大门显示“没有结果”.
-   `brandlab-edge-probe [--json] <url>...` (当地运行为 `npm run probe:edge`,最多25个URL)日志 `x-vercel-cache`, (中文(简体) ), `age`, (中文(简体) ), `x-vercel-id` (对接和函数区域)和每个页面的第一个字节的时间,其RSC 有效载荷及其 `_tree` 和每个来源的 `/api/contact` (预计405起)。 这是测量 原产地-地区基准的`operations/shared-platform/ORIGIN_REGION.md`) (中文(简体) ).

## 常见问题

### @brandlab-digital/conformance 是什么？

专有软件 Brandlab Digital Marketing\. 版权所有。 为Brandlab客户端网站发布\.

### 如何安装 @brandlab-digital/conformance？

在项目目录运行 npm install @brandlab-digital/conformance，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 brandlab-ready、brandlab-verify、brandlab-area-map、brandlab-edge-probe、brandlab-live-check、brandlab-estate-scope、brandlab-prefetch-probe、brandlab-preview-enquiry，可以用 npx brandlab-ready 直接运行。

### @brandlab-digital/conformance 支持 TypeScript 吗？

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

### @brandlab-digital/conformance 支持 ESM 还是 CommonJS？

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

### @brandlab-digital/conformance 可以商用吗？

@brandlab-digital/conformance 使用 UNLICENSED 许可。作者声明为 UNLICENSED，即不授予公开使用许可（与公共领域的 Unlicense 不同）。使用前需获得作者授权。以上为概括，不构成法律意见，请以许可原文为准。

### @brandlab-digital/conformance 的下载量有多少？

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

### @brandlab-digital/conformance 还在维护吗？

最新版本 4\.2\.2 发布于 2026/11/06（2 天前）；至今共发布 118 个版本，其中过去 12 个月发布了 118 个；首次发布于 2026/05/26。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

