@tracepass/gs1-utils

中文文档
0.19.0发布于 2026/11/03Apache-2.0TypeScriptES Module零依赖构建来源已验证

GS1 identifier utilities for Digital Product Passports — GTIN and GLN check-digit validation, GS1 Digital Link URI build/parse. Zero dependencies in the core; the optional QR subpath asks for qrcode as a peer.

原始使用文档
TracePass

@tracepass/gs1-utils

GTIN and GLN check digits, GS1 Digital Link build and parse. Zero dependencies in the core; the optional ./qr subpath asks for qrcode as a peer.

License Dependencies

Part of tracepass-open · Maintained by TracePass


npm install @tracepass/gs1-utils
import {
  validateGtin, normalizeGtin, toGtin14,
  validateGln, normalizeGln,
  buildDigitalLinkUri, parseDigitalLinkUri,
} from "@tracepass/gs1-utils";

validateGtin("09520123456788");   // true — mod-10 check digit, must be 14 digits
validateGtin("09520123456780");   // false

validateGln("5012345678900");     // true — 13 digits, mod-10

// Normalise any GTIN length to 14 digits (left-pad then check check digit)
normalizeGtin("5449000000996");   // "05449000000996" — GTIN-13 → GTIN-14
normalizeGtin("012345678905");    // "00012345678905" — GTIN-12 → GTIN-14
normalizeGtin("96385074");        // "00000096385074" — GTIN-8 → GTIN-14
normalizeGtin("05449000000997");  // null — bad check digit

toGtin14("5449000000996");        // alias for normalizeGtin

buildDigitalLinkUri("id.example.com", "5449000000996", "SN-1");
// "https://id.example.com/01/05449000000996/21/SN-1"  — GTIN-13 auto-normalised to 14

parseDigitalLinkUri("https://id.example.com/01/5449000000996/21/SN-1");
// { gtin: "05449000000996", serialNumber: "SN-1" }  — GTIN-13 in path normalised

buildDigitalLinkUri takes a bare domain — id.example.com, not https://id.example.com. GTINs of any valid length (8/12/13/14) are accepted and always emitted as 14 digits. parseDigitalLinkUri normalises shorter GTINs found in paths to 14 digits on the way out.

QR codes are a separate subpath

Rendering a QR code needs a dependency, and identifier validation doesn't. So the core stays dependency-free and QR lives behind its own entry point, with qrcode declared an optional peer:

npm install @tracepass/gs1-utils qrcode
import { generateQrCode } from "@tracepass/gs1-utils/qr";

License

Apache-2.0

版本与发布记录

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

版本发布日期距今
0.19.0latest2026/11/03今天
0.18.42026/10/303 天前
0.18.32026/10/303 天前
0.18.22026/10/304 天前
0.18.12026/10/304 天前
0.18.02026/10/295 天前

关于 @tracepass/gs1-utils 的常见问题

@tracepass/gs1-utils 是什么?

用于数字产品护照的GS1标识工具- GTIN和GLN校验数字验证,GS1数字链接URI构建/解析。核心零依赖;可选的QR子路径要求将qrcode作为对等体。

如何安装 @tracepass/gs1-utils?

在项目目录运行 npm install @tracepass/gs1-utils,或使用 pnpm add / yarn add / bun add。

@tracepass/gs1-utils 支持 TypeScript 吗?

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

@tracepass/gs1-utils 支持 ESM 还是 CommonJS?

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

@tracepass/gs1-utils 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@tracepass/gs1-utils 可以商用吗?

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

@tracepass/gs1-utils 还在维护吗?

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