@bare-ts/tools

中文文档
0.19.0发布于 2026/01/27MITES Module零依赖构建来源已验证近 30 天下载 1.1万

二进制应用记录编码( BARE) 计划汇编器

中文使用文档
文档目录3 节
  1. 开始
  2. 为什么是BARE?
  3. 为什么光着身子?

bare-ts

A 类 类型脚本 该代码生成器 常规 二进制格式

NPM package bundle size - minified and gzipped Coverage

二进制应用程序记录编码 (单位:千美元)常规)是一个基于二进制的策略 格式,有利于紧凑和可容性. @ bare- ts/ 工具 提供生成的编译器 字体 财务报告和审定财务报表 Java 脚本 代码从 a 常规 计划.

警告: 常规 规格目前是 电子论坛 草案. 规格现在相当稳定. 然而,在最后释放之前,它可能仍在演变.

开始

@bare-ts/tools NPM version @bare-ts/lib NPM version

首先,安装 @ bare- ts/ 工具 财务报告和审定财务报表 @bare-ts/lib (英语)数字 :

npm install --save-dev @bare-ts/tools
npm install @bare-ts/lib
  • @ bare- ts/ 工具 能够从一个计划生成解码器和编码器

  • @bare-ts/lib (英语) 提供基本的解码器和编码器

也可以下载捆绑和可执行版本 @ bare- ts/ 工具 名称 bare 本节 资产 总数 打开 GitHub 图像。 。 。 .

然后,写一个计划:

type Gender enum {
    FEMALE
    FLUID
    MALE
}

type Person struct {
    name: str
    email: str
    gender: optional<Gender>
}

type Organization struct {
    name: str
    email: str
}

type Contact union { Person | Organization }

type Contacts list<Contact>

将您的计划编入代码 :

bare schema.bare --out=code.ts

一旦生成代码, 编码和解码消息 :

import { Gender, decodeContacts, encodeContacts } from "./code.js"
import { strict } from "node:assert"

const contacts = [
    {
        tag: "Person",
        val: {
            name: "Seldon",
            email: "[email protected]",
            gender: Gender.Male,
        },
    },
]

const payload = encodeContacts(contacts)
const contacts2 = decodeContacts(payload)

strict.deepEqual(contacts, contacts2)

参考我们 types 文档页面 查找 BARE 类型和 TypeScript 类型之间的对应关系,以及一些 CLI 选项对此的影响.

为什么是BARE?

压缩消息: 相对 贝森, (中文(简体) ), 边境保护局,以及 邮件包, (中文(简体) ), 常规 信件不嵌入计划信息.

可能时可进行生物编码: BARE值大多具有单一的二进制表示. 这使得消息分解等使用案例的支持更容易.

关注现代平台:信息是octet-accessed并使用小endian代表.

简单: 相对 协议缓冲 财务报告和审定财务报表 平缓, (中文(简体) ), 常规 并不限制它的二进制格式,以支持计划进化. 协议缓冲 在每个消息中嵌入元数据,使每个字段都具有可选性. 常规 建议使用被标记的结合作为消息类型支持后向兼容性.

为什么光着身子?

实用错误报告数字 : 光线 区分可收回错误和API误用. 解码器可能发出可恢复的错误(BareError),并提供足够的信息来理解信息为何不正确. API 误用释放出 AssertionError。 。 。 . AssertionError 只在 development 出口条件 设置或何时 NODE_ENV 环境变量设定为 development。 。 。 . 此外, 光线 假设使用 TypeScript 可以减少 API 误用次数来检查.

优化捆绑大小数字 : 光线 采用功能和程序编程风格. 这有利于利用现代技术 消除已死密码 技术,例如 树摇。 。 。 . 使用捆绑器,例如 环境建设, (中文(简体) ), 滚动,或 网络软件包,您的捆绑只包含实际使用的函数.

生成高效代码 光线 注意生成现代JavaScript引擎可能优化的代码.

版本与发布记录

@bare-ts/tools 共发布 22 个版本,首次发布于 2022/01/04;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.19.0latest2026/01/279 个月前
0.18.02025/10/271 年前
0.16.12025/10/131.1 年前
0.17.12025/10/131.1 年前
0.17.02025/05/041.5 年前
0.16.02024/11/022 年前

关于 @bare-ts/tools 的常见问题

@bare-ts/tools 是什么?

二进制应用记录编码( BARE) 计划汇编器

如何安装 @bare-ts/tools?

在项目目录运行 npm install @bare-ts/tools,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@bare-ts/lib(>=0.5.0)、typescript(>=5.7.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 bare,可以用 npx bare 直接运行。

@bare-ts/tools 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/bare-ts__tools 是否存在。

@bare-ts/tools 支持 ESM 还是 CommonJS?

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

@bare-ts/tools 需要什么版本的 Node.js?

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

@bare-ts/tools 可以商用吗?

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

@bare-ts/tools 的下载量有多少?

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

@bare-ts/tools 还在维护吗?

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