# @funboxteam/crafter 中文文档

规范地址：https://npmcn.com/package/%40funboxteam/crafter/

版本：6\.0\.2
npm 元数据更新时间：2023-09-06T11:30:31.120Z
中文译文更新时间：2026-11-15T16:57:59.178Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：853 kB，168 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：4 个
- 首次发布：2022-03-21T11:20:53.652Z
- 最新版本发布：2023-06-29T21:11:27.150Z
- 近 30 天下载量：2980（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：10（近 12 个月 0 个）

## 中文简介

JavaScript 替换用于解析 API 蓝图文档格式的 Draver 库

## 安装

```sh
npm install @funboxteam/crafter
```

也可以使用：`pnpm add @funboxteam/crafter`、`yarn add @funboxteam/crafter`、`bun add @funboxteam/crafter`

## README

# @ funboxteam/ cracker (英语)

[![npm (scoped)](https://img.shields.io/npm/v/@funboxteam/crafter)](https://www.npmjs.com/package/@funboxteam/crafter) [![Coverage Status](https://coveralls.io/repos/github/funbox/crafter/badge.svg?branch=master)](https://coveralls.io/github/funbox/crafter?branch=master)

![Crafter avatar](https://npmcn.com/package/%40funboxteam/crafter/logo.png)

**曲折** 是一个 [API 蓝图](https://apiblueprint.org/) 以纯 JavaScript 编写的 parser . 它取代了Draver库,增加了一些方便的功能.

[{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢](https://npmcn.com/package/%40funboxteam/crafter/README.ru.md)

## 理由

起草器用C++来写出,所以代码相当复杂和模糊,同时包含了大量的bug和遗产. 很难理解其某些部分是如何运作的。 而如果bug修正受到维护者的欢迎,增加新的特性就可能成为障碍.

我们的公司有很小比例的C++项目,所以几乎没有一个开发者能够维护Draver.

这就是为什么我们决定 创建自己的JavaScript替换, 消除所有之前描述的限制, 易于维护,并使我们能够增加所有需要的特性.

## 特征

与 Draver 相比,这个库可以提供一些重要的功能:

-   **模块**。现在可以将一个巨大的文件分割成若干部分,并互相注入APIB文件,这使得文档易于使用.
-   **资源原型** 允许您在一个地方建立共同的响应,并通过文档重新使用.
-   支助 **查询字符串中的数组**。 。 。 .
-   **基于 JSON Schema 类型**在复杂类型的情况下,可以直接将其称为JSON Schema.
-   **字符串验证** 属性来描述参数的预期长度和它们应该匹配的正则表达式.
-   说明a **非 HTTP 交互** (作为WebSocket)通过Message部分.

有关图书馆工作安排的更多信息 [文档](https://npmcn.com/package/%40funboxteam/crafter/docs) 目录.

## 安装

全局安装 :

```bash
npm install -g @funboxteam/crafter
```

本地安装 :

```bash
npm install --save @funboxteam/crafter
```

## 使用量

### 节点.js

分析文件 :

```javascript
const crafter = require('@funboxteam/crafter');

const apibFile = 'doc.apib';
const ast = (await crafter.parseFile(apibFile))[0].toRefract();
```

或提供包含APIB文档的字符串变量:

```javascript
const crafter = require('@funboxteam/crafter');

const source = '# My API\n\n## List users [GET /users]\n\n+ Response 200';
const ast = (await crafter.parse(source))[0].toRefract();
```

### 国 际

分析一个名为 `doc.apib` 运行下一个命令 :

```bash
crafter [options] doc.apib
```

## 选项

-   `-f, --format <format>` ——设置解析结果的输出格式. 可用格式 : `json`, (中文(简体) ), `yaml`默认为 `yaml`。 。 。 .
-   `-s, --sourcemap` ——解析结果中导出源图.
-   `-d, --debug` ——启用调试模式,可禁用抓取一些例外.
-   `-l, --langserver` ——启用容忍模式,用于语言服务器.
-   `-h, --help` 产出使用信息.

## 运行测试

```bash
npm test
```

## 在 Docker 中运行

要将 @ funboxteam/ craver 作为 Docker 容器运行, 执行目录中的下一条命令并附带文档 :

```bash
docker run \
  --rm \
  -v $(pwd):/app \
  funbox/crafter -f json doc-file.apib
```

图像默认工作目录设定为 `/app`因此,更容易上载 输入主机目录 `/app`。那么像参数那样的文件名就可以了.

### 窗口中的嵌入容器

要运行 Windows 中的容器,请添加斜线(`/`) 之前 `pwd`。 。 。 . 命令会是这样的:

```bash
docker run \
  --rm \
  -v /$(pwd):/app/doc \
  funbox/crafter -f json doc/doc-file.apib
```

挂载目录可能为空 。 在这种情况下,请检查您的硬盘是否标记为共享 . 此设置可以在用于 Windows, 共享驱动器部分的 Docker 桌面的设置中找到. 如果磁盘没有共享,请标记为 `shared`,应用更改,并重新启动 Docker 桌面.

## 为什么API蓝图

我们广泛使用JSON API 在公司, 所以每天我们的开发者 面对的问题 描述和批准API文件, 跟踪变化,在伙伴之间分发文件等。 这就是为什么我们觉得非常需要 方便的工具 与文件有关的工作.

从历史上看,这场战斗是在 [API 蓝图](https://apiblueprint.org/) 财务报告和审定财务报表 [斯瓦格语Name](https://swagger.io/)。 。 。 . 我们选择API蓝图有两个原因. 首先,使用API Blueprint描述的文献源代码对于人类来说更为可读. 第二,在进行研究时,Swagger缺乏几个重要特征,因为 `One Of` 支助.

## 贷项

这个项目的标志是很棒的 [伊戈尔·加里巴尔迪](https://pandabanda.com/)。 。 。 .

[![Sponsored by FunBox](https://funbox.ru/badges/sponsored_by_funbox_centered.svg)](https://funbox.ru/)

## 常见问题

### @funboxteam/crafter 是什么？

JavaScript 替换用于解析 API 蓝图文档格式的 Draver 库

### 如何安装 @funboxteam/crafter？

在项目目录运行 npm install @funboxteam/crafter，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 crafter，可以用 npx crafter 直接运行。

### @funboxteam/crafter 支持 TypeScript 吗？

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

### @funboxteam/crafter 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @funboxteam/crafter 可以商用吗？

@funboxteam/crafter 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @funboxteam/crafter 的下载量有多少？

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

### @funboxteam/crafter 还在维护吗？

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

