@deepkit/bson

中文文档
1.1.0发布于 2026/11/01MITTypeScriptESM + CJS零依赖

Deepkit BSON parser

原始使用文档

BSON

@deepkit/bson is a high-performance TS implementation of a parser and serializer for BSON, the MongoDB Binary JSON format. It's the fastest JS BSON parser, even faster than native JSON.parse/stringify.

Deepkit has reimplemented it because it's a high-performance framework and both the official JS (js-bson) and C++ (bson-ext) packages are too slow. How slow? When converting 10k elements in an array, js-bson takes 25ms, bson-ext takes 31ms, whiles JSON.parse takes only 5ms. This makes the official BSON parser 5x slower than native JSON.parse. deepkit/type-bson on the other hand takes only 2ms and is therefore 13x faster.

Benchmark

Parsing BSON buffer that contains an array with 10k objects.

MethodTime (ms)
official native bson-ext31ms
official js-bson25ms
deepkit/bson generic v26ms
deepkit/bson generic v34ms
JSON.parse5ms
deepkit/type JIT2ms

Serializing an array with 10k objects.

MethodTime (ms)
official native bson-ext39ms
official js-bson33ms
JSON.stringify5ms
deepkit/bson JIT2ms

"deepkit/bson JIT" means a parser/serializer based on a schema like so:

import {t} from '@deepkit/type';
import {getBSONDecoder} from '@deepkit/bson';

interface Model {
    username: string;
    tags: string[];
    priority: number;
}

const decoder = getBSONDecoder<Model>();
const bson = new Buffer([]);

const document = decoder(bson);

whereas "deepkit/type generic" means schema-less:

import {parseObject, ParserV2, ParserV3} from '@deepkit/bson';
const bson = new Buffer([]);

const object1 = parseObject(new ParserV2(bson));

const object2 = parseObject(new ParserV3(bson));

Differences

There are a couple of differences to the official serializer.

  • ObjectId is deserialized as string.
  • UUID is deserialized as string.
  • BigInt is supported and serialized as long.
  • Unlimited size BigInt supported (serialised as binary)
  • Long is deserialized as BigInt.

版本与发布记录

@deepkit/bson 共发布 144 个版本,首次发布于 2020/10/30;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.1.0latest2026/11/012 天前
1.0.192025/09/221.1 年前
1.0.182025/09/221.1 年前
1.0.152025/06/261.4 年前
1.0.122025/06/051.4 年前
1.0.112025/06/021.4 年前

关于 @deepkit/bson 的常见问题

@deepkit/bson 是什么?

Deepkit BSON解析器

如何安装 @deepkit/bson?

在项目目录运行 npm install @deepkit/bson,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@deepkit/core(^1.1.0)、@deepkit/type(^1.1.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@deepkit/bson 支持 TypeScript 吗?

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

@deepkit/bson 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@deepkit/bson 可以商用吗?

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

@deepkit/bson 还在维护吗?

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