# @bytecodealliance/jco-transpile 中文文档

规范地址：https://npmcn.com/package/%40bytecodealliance/jco-transpile/

版本：0\.23\.0
npm 元数据更新时间：2026-10-31T14:10:23.625Z
中文译文更新时间：2026-11-08T21:46:56.901Z
软件包许可：\(Apache-2\.0 WITH LLVM-exception\)

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

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

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

- 包体积（解压后）：7.7 MB，63 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：4 个
- 首次发布：2025-06-26T00:25:01.967Z
- 最新版本发布：2026-10-31T14:10:23.285Z
- 近 30 天下载量：3578759（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：50（近 12 个月 41 个）

## 中文简介

WebAssembly Jco 组件转接功能

## 安装

```sh
npm install @bytecodealliance/jco-transpile
```

也可以使用：`pnpm add @bytecodealliance/jco-transpile`、`yarn add @bytecodealliance/jco-transpile`、`bun add @bytecodealliance/jco-transpile`

## README

# `@bytecodealliance/jco-transpile`

这个 [`@bytecodealliance/jco`](https://www.npmjs.com/package/@bytecodealliance/jco) 子项目允许转录 [Web大会组件](https://component-model.bytecodealliance.org/) 输入ES模块 可以在像NodeJS和浏览器这样的Javascript环境中运行.

`@bytecodealliance/jco-transpile` ,主要用于仅用于转接功能 `jco` 需要帮助, 财务报告和审定财务报表 `jco` 来源于这个图书馆的转录.

# 快速启动

用于 `@bytecodealliance/jco-transpile` 作为您自己的代码中的库,您可以使用一些导出函数.

看看我们 [gitHub 上的例子](https://github.com/bytecodealliance/jco/tree/main/examples/transpile)。 。 。 .

## 传输

要传送现有的WebAssembly组件(磁盘路径, `Buffer`:

```js
import { transpile, writeFiles } from '@bytecodealliance/jco-transpile';

async function example() {
    // Transpile a given WebAssembly component into JS runnabe in NodeJS
    const { files, imports, exports } = await transpile('path/to/component.wasm', { outDir: 'path/to/output/dir' });
    // Write out the files that have been generated to disk
    await writeFiles(files);
}
```

> \[注\] `transpile` 选择很多选项 -- -- 咨询 [`transpile.d.ts`](https://npmcn.com/package/%40bytecodealliance/jco-transpile/src/transpile.d.ts) 用于更详细的类型信息.
> 
> `outDir` 控制生成文件路径的前缀, 所以指定它, 尽管没有文件 实际写入磁盘.

### 转换示例

如果您使用给定的 WIT 写入组件 :

```wit
package docs:adder@0.1.0;

interface add {
    add: func(x: u32, y: u32) -> u32;
}

world adder {
    export add;
}
```

在该组件转接后,您应该看到输出如下:

```console
dist
└── transpiled
    ├── add.core.wasm
    ├── add.d.ts
    ├── adder.core.wasm
    ├── adder.d.ts
    ├── adder.js
    ├── add.js
    ├── add.mjs
    └── interfaces
        └── docs-adder-add.d.ts

3 directories, 8 files
```

`dist/transpiled/adder.js` 是可以从“ host” 代码中使用的切入点 :

```js
import { add } from './dist/transpiled/adder.js';

console.log('1 + 2 = ' + add.add(1, 2));
```

你可以自己试试这个例子 [以 GitHub 为单位](https://github.com/bytecodealliance/jco/tree/main/examples/transpile/adder)。 。 。 .

## 生成来宾( 组件) 类型

写入组件时,您可以生成与您相应的打字声明 [Web Assembly 接口类型](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md) 产生客体的进出口:

```js
import { generateGuestTypes, writeFiles } from '@bytecodealliance/jco-transpile';

async function example() {
    const files = await generateGuestTypes('path/to/wit/dir-or-file, { outDir: 'path/to/output/dir' });

    // NOTE: Files is a serialization of the files produced of the following type:
    // type FileBytes = { [filepath: string]: Uint8Array; };
    //
    // You can use the code below to write out all files to a given directory
    await Promise.all(
        Object.entries(files).map(async ([filePath, bytes]) => {
            await mkdir(dirname(filePath), { recursive: true });
            await writeFile(filePath, bytes);
        })
    );
}
```

来宾类型是JS组件使用的WIT接口的执行 -- -- 即JS代码 变成一个组件 `jco componentize`编号 :`componentize-js`进行有益的工作.

对于WIT世界中指定的导入,该类型生成将启用 _电话_编号 :_使用_ 界面.

### 来宾类型生成实例

例如,考虑到以下WIT接口:

```wit
package docs:adder@0.1.0;

interface add {
    add: func(x: u32, y: u32) -> u32;
}

world adder {
    export add;
}
```

制作的打字声明如下:

```
declare module 'docs:adder/add@0.1.0' {
  export function add(x: number, y: number): number;
}
```

## 生成主机类型

在构建运行转录组件的平台时,可以生成 Typescript 与《公约》相对应的声明 [Web Assembly 接口类型](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md) (构成部分需要) 生成主机类型 :

```js
import { generateHostTypes, writeFiles } from '@bytecodealliance/jco-transpile';

async function example() {
    // Generate types for a host binding (i.e. supplying imports to a transpiled component)
    const files = await generateHostTypes('path/to/wit/dir-or-file, { outDir: 'path/to/output/dir' });
    // Write out the files that have been generated to disk
    await writeFiles(files);
}
```

主机类型是WIT接口的实现,用于 _翻译后_ JS代码, 即"主机"(NodeJS + V8 或浏览器)上,以制作平台 _进口_ 工作时.

对于WIT世界中指定的导入,该类型生成将启用 _执行_ 进口数量 功能界面.

### 主机类型生成示例

例如,考虑到以下WIT接口:

```wit
package docs:adder@0.1.0;

interface add {
    add: func(x: u32, y: u32) -> u32;
}

world adder {
    export add;
}
```

制作的打字声明如下:

```
/** @module Interface docs:adder/add@0.1.0 **/
export function add(x: number, y: number): number;
```

# 许可证

这个项目根据Apache 2.0许可证获得许可,LLVM例外. 见 [自由主义](https://npmcn.com/package/%40bytecodealliance/jco-transpile/LICENSE) 更多细节.

### 捐款

除非您另有明确声明,否则有意提交的任何捐款 根据Apache-2.0许可证的定义, 应照此办理,不附加任何条件.

## 常见问题

### @bytecodealliance/jco-transpile 是什么？

WebAssembly Jco 组件转接功能

### 如何安装 @bytecodealliance/jco-transpile？

在项目目录运行 npm install @bytecodealliance/jco-transpile，或使用 pnpm add / yarn add / bun add。

### @bytecodealliance/jco-transpile 支持 TypeScript 吗？

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

### @bytecodealliance/jco-transpile 支持 ESM 还是 CommonJS？

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

### @bytecodealliance/jco-transpile 可以商用吗？

@bytecodealliance/jco-transpile 使用 \(Apache-2\.0 WITH LLVM-exception\) 许可。声明的许可为 \(Apache-2\.0 WITH LLVM-exception\)，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### @bytecodealliance/jco-transpile 的下载量有多少？

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

### @bytecodealliance/jco-transpile 还在维护吗？

最新版本 0\.23\.0 发布于 2026/10/31（8 天前）；至今共发布 50 个版本，其中过去 12 个月发布了 41 个；首次发布于 2025/06/26。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

