# @0x/abi-gen 中文文档

规范地址：https://npmcn.com/package/%400x/abi-gen/

版本：5\.8\.5
npm 元数据更新时间：2026-08-12T18:05:32.201Z
中文译文更新时间：2026-11-06T11:48:31.892Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%400x/abi-gen
原文对照：https://npmcn.com/package/%400x/abi-gen/?lang=original
项目主页：https://github.com/0xProject/tools/tree/main/abi-gen
源码仓库：https://github.com/0xProject/tools

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

- 包体积（解压后）：156 kB，39 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=6\.12
- 运行依赖：17 个
- 首次发布：2018-10-18T14:03:26.285Z
- 最新版本发布：2023-04-07T18:24:24.336Z
- 近 30 天下载量：3358（2026-10-04 至 2026-11-02，npm 官方下载统计）
- 已发布版本数：87（近 12 个月 0 个）

## 中文简介

从ABI和手柄栏模板生成合同包装

## 安装

```sh
npm install @0x/abi-gen
```

也可以使用：`pnpm add @0x/abi-gen`、`yarn add @0x/abi-gen`、`bun add @0x/abi-gen`

## README

# ABI 源词

此软件包允许您从 ABI 文件生成 TypeScript 或 Python 合同包装 . 它的灵感很大 [Geth 双子体](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) 但采取不同的做法. 您可以编写您的自定义手提栏模板, 使您能够将生成的代码与现有的常规无缝地整合到您现有的代码库中 .

[给](https://github.com/0xProject/0x-monorepo/tree/development/packages/0x.js/abi-gen-templates) 是用于生成 0x.js 所使用的合同包装的模板.

## 安装

`yarn add -g @0x/abi-gen`

## 使用量

```
$ abi-gen --help
Options:
  --help               Show help                                       [boolean]
  --version            Show version number                             [boolean]
  --abis               Glob pattern to search for ABI JSON files
                                                             [string] [required]
  --output, -o, --out  Folder where to put the output files  [string] [required]
  --partials           Glob pattern for the partial template files      [string]
  --template           Path for the main template file that will be used to
                       generate each contract                [string] [required]
  --backend            The backing Ethereum library your app uses. For
                       TypeScript, either 'web3' or 'ethers'. Ethers
                       auto-converts small ints to numbers whereas Web3 doesn't.
                       For Python, the only possibility is Web3.py
                          [string] [choices: "web3", "ethers"] [default: "web3"]
  --network-id         ID of the network where contract ABIs are nested in
                       artifacts                          [number] [default: 50]
  --language           Language of output file to generate
              [string] [choices: "TypeScript", "Python"] [default: "TypeScript"]

Examples:
  abi-gen --abis 'src/artifacts/**/*.json'  Full usage example
  --out 'src/contracts/generated/'
  --partials
  'src/templates/partials/**/*.handlebars'
  --template
  'src/templates/contract.handlebars'

```

你必须通过一个 [阴影](https://en.wikipedia.org/wiki/Glob_\(programming\)) 您的 abi 文件所在的模板. TL; DR - 这是0x.js的示例.

`--abis 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry).json`

我们可以用 `--abis 'src/artifacts/*.json` 但我们想排除一些abi文件.

ABI 文件应该是 [旋转](http://truffleframework.com/) 合同文物(带有ABI键的JSON对象)或JSON abi阵列.

您还需要指定每个合同所使用的主模板的位置 `--template` 以及部分模板 `--partials` 以后可以从主机上使用.

## 如何写自定义模板 ?

最好的开始方法是复制 [0x.js 模板](https://github.com/0xProject/0x-monorepo/tree/development/packages/abi-gen-templates) 并开始调整 满足你的需要. 我们用 [手柄栏](http://handlebarsjs.com/) 引擎盖下的模板引擎. 您需要使用主模板 `contract.mustache`。它将用来生成每个合同包装。 尽管 - 你不需要,而且也许不应该将你的逻辑全部写入一个模板文件. 你可以写 [部分模板](http://handlebarsjs.com/partials.html) 只要它们位于一个部分文件夹内,它们就会被登记和提供.

## 我的模板中有哪些数据/内容?

现在,你没有得到很多的方法 ABI,一些有用的帮助 和一个合同名称,因为它已经足够 我们的使用案例, 但如果你需要别的东西 - 创建一个公关. 见 [类型定义](https://github.com/0xProject/0x-monorepo/tree/development/packages/abi-gen/src/types.ts) 我们所传递的.

## 输出文件

输出文件将在指定的输出文件夹内生成. 如果您的文件夹中已经有一些文件, 它们将被覆盖 .

文件名称、类别和方法将转换为特定目标语言的标准命名惯例.

## 捐款

我们欢迎更广泛的社会作出改进和修正! 要在此包中报告错误, 请在此寄存器中创建一个问题 .

请读我们的 [捐款准则](https://npmcn.com/package/CONTRIBUTING.md) 在开始之前.

### 安装依赖关系

如果您没有启用纱线工作空间( Yarn < v1.0) - 启用它们 :

```bash
yarn config set workspaces-experimental true
```

然后安装依赖关系

```bash
yarn install
```

您还需要安装 Python 3 , 以便构建和运行命令行界面的测试, 该界面与 Python 3 集成 `yarn build`, (中文(简体) ), `yarn test`,以及 `yarn lint` 命令如下。 更具体地说,你的地方 `pip` 应解决 Python 3 版本 `pip`,而不是Python 2.x版本.

### 构建

要构建此软件包和它所依赖的所有其他单列波软件包,请从单列波根目录中运行以下内容:

```bash
PKG=@0x/abi-gen yarn build
```

或在变化中不断重建:

```bash
PKG=@0x/abi-gen yarn watch
```

### 干净

```bash
yarn clean
```

### 林特

```bash
yarn lint
```

### CLI 测试

输入的文件 `test-cli/` 用于测试根据一套固定合同运行命令行工具所产生的输出。 这些测试与 `yarn build`, (中文(简体) ), `yarn test`等,但可以根据以下指令独立运行.

汇编固定合同:

```
yarn compile:sol
```

将定点合同编入ABI是提前完成的,ABI将登记到 `git`,以加快测试运行时间。 因此,本汇编并非作为《公约》的一部分自动进行 `yarn build`,在对固定合同作出任何修改之后,必须明确进行;对固定合同的任何拟议修改都应附有对相应的汇编文物的修改.

生成包件(如果是TypeScript,则创建包件)并构建单元测试:

```
yarn test_cli:build
```

运行单元测试并检查生成的包装对已知包装的 diffs :

```
yarn test_cli
```

已知的好包装器以前已经投入使用,并保存在 `test-cli/expected-output/{language}`。它们旨在提供样本输出,应与生成代码同步。 修改此项目时或 `@0x/abi-gen-templates`运行 `yarn test_cli:prebuild` 生成新代码 `test-cli/output/{language}`,然后手动复制到 `test-cli/expected-output/{language}`。 。 。 .

根据生成的代码运行 linters :

```
yarn test_cli:lint
```

## 常见问题

### @0x/abi-gen 是什么？

从ABI和手柄栏模板生成合同包装

### 如何安装 @0x/abi-gen？

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

### @0x/abi-gen 支持 TypeScript 吗？

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

### @0x/abi-gen 支持 ESM 还是 CommonJS？

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

### @0x/abi-gen 需要什么版本的 Node\.js？

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

### @0x/abi-gen 可以商用吗？

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

### @0x/abi-gen 的下载量有多少？

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

### @0x/abi-gen 还在维护吗？

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

