@design-parity/adapter-bundle

中文文档
1.18.0发布于 2026/11/07Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 3709

Image-bundle reference adapter: resolves a committed directory or .zip of reference PNGs plus a manifest.json (linked via design-map.json) and normalizes to a DesignReference. Covers any design tool with no read API or HTML export — just a dump of exporte

原始使用文档
文档目录4 节
  1. Raw images + a tiny manifest
  2. The bundle
  3. Usage
  4. Errors

@design-parity/adapter-bundle

The image-bundle ReferenceAdapter for design-parity. Depends only on @design-parity/core (plus the tiny, dependency-free fflate for in-memory unzip).

Raw images + a tiny manifest

There is a real workflow with no design-tool API and no HTML export: a designer just hands over a bundle of exported PNGs — a committed folder or a .zip — straight out of the design tool. The adapter-claude-design driver already does "committed HTML export + handoff", but that is more than this case needs. This adapter generalizes it down to "raw images + a tiny manifest.json", so it covers Figma/Stitch/Claude exports dumped as PNGs, or any tool with no integration at all.

Same linkMethod: "manifest" (the only link method a source with no machine link can have); simpler input.

design-map.json ──▶ fixtures/bundle/offer-card/  ──┐
   (manifest)        (dir or .zip of PNGs)          ├─▶ DesignReference
                       └─ manifest.json ────────────┘     (manifest)

The bundle

The ref in design-map.json is a repo-relative path to a committed directory or .zip. The bundle holds the reference PNGs plus a manifest.json:

{
  "componentId": "ui/Card.kt#OfferCard",
  "tokens": { "spacing": { "padding": 16 }, "radius": { "corner": 12 } },
  "images": [
    { "state": "default", "theme": "light", "size": "600px", "path": "offer-card.light.png" },
    { "state": "default", "theme": "dark",  "size": "600px", "path": "offer-card.dark.png" }
  ]
}
  • images[].path — a PNG, resolved relative to the bundle root. Its width/height are read from the PNG's IHDR — not trusted from the manifest — so reference dimensions can never drift from the committed bytes. (width / height in the manifest, if present, are ignored hints.)
  • images[].size — a producer's breakpoint label, canonicalized through normalizeSize from @design-parity/core ("600px" → "medium") so the bundle's images pair with the candidate. An unrecognized label is kept verbatim.
  • tokens — inline DesignTokens for token-compliance checks.
  • componentId — optional; when present it must match the component the resolver asked for, else resolve throws.

A directory bundle's image uri is the repo-relative path to the PNG; a .zip bundle has no standalone file per entry, so its uri is the unzipped PNG bytes inlined as a data:image/png;base64,… URI. The diff engine and the HTML report both decode data: URIs, so a .zip bundle is fully diff-able and renderable end-to-end.

Usage

import { createBundleAdapter } from "@design-parity/adapter-bundle";

const adapter = createBundleAdapter();
const ref = await adapter.resolve(
  "ui/Card.kt#OfferCard",          // resolver-supplied code handle
  "fixtures/bundle/offer-card",    // the design-map ref (dir or .zip, repo-relative)
  { repoRoot: process.cwd(), env: process.env },
);

Errors

resolve throws a clear, prefixed, typed error (all extend BundleError):

  • BundleNotFoundError — the directory / .zip named by the ref is missing.
  • BundleManifestError — manifest.json is absent, not valid JSON, malformed, or its componentId contradicts the resolver.
  • BundleImageNotFoundError — a manifest image references a file not in the bundle.

Everything runs offline — no network, no model.

版本与发布记录

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

版本发布日期距今
1.18.0latest2026/11/074 天前
1.17.02026/10/2617 天前
1.16.12026/10/1824 天前
1.16.02026/10/1726 天前
1.15.02026/10/1528 天前
1.14.12026/10/1230 天前

关于 @design-parity/adapter-bundle 的常见问题

@design-parity/adapter-bundle 是什么?

Image-bundle reference adapter: resolves a committed directory or .zip of reference PNGs plus a manifest.json (linked via design-map.json) and normalizes to a DesignReference. Covers any design tool with no read API or HTML export — just a dump of exporte

如何安装 @design-parity/adapter-bundle?

在项目目录运行 npm install @design-parity/adapter-bundle,或使用 pnpm add / yarn add / bun add。

@design-parity/adapter-bundle 支持 TypeScript 吗?

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

@design-parity/adapter-bundle 支持 ESM 还是 CommonJS?

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

@design-parity/adapter-bundle 可以商用吗?

@design-parity/adapter-bundle 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@design-parity/adapter-bundle 的下载量有多少?

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

@design-parity/adapter-bundle 还在维护吗?

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