Skip to content

NAPI-RS 是一个使用 Rust 构建预编译 Node.js 原生扩展的框架

轻松锈化你的 Node.js 应用!

use napi_derive::napi;

#[napi]
fn fibonacci(n: u32) -> u32 {
  match n {
    1 | 2 => 1,
    _ => fibonacci(n - 1) + fibonacci(n - 2),
  }
}

CommonJSesm 模块系统兼容, 自动生成 .d.ts 定义文件:

import { fibonacci } from './index.js'

// output: 5
console.log(fibonacci(5))
const { fibonacci } = require('./index')

// output: 5
console.log(fibonacci(5))

功能

🚀 为 Node.js 应用带来原生性能

👷‍♂️ 由 Rust 编译器保障的内存安全

⚡️ 通过 BufferTypedArrayRustNode.js之间高效传输二进制数据,并可按需使用零拷贝视图

⚙️ 轻松并行代码

赞助

生态

支持与兼容性

Node-API 的 ABI 兼容范围、构建 CLI 的 Node.js 要求,以及源码仓库当前持续测试的版本并不是同一件事。当前 CLI 构建建议使用 Node.js 22.13+ 或 24+;源码仓库的主要矩阵测试 Node.js 22、24 和 26。每个原生产物仍然只适用于其操作系统、CPU 和 libc 目标。

运行时兼容性
Node-API ABI 稳定性一个二进制可以跨兼容的 Node.js 版本使用;Node-API 等级决定实际最低运行时。

napi-rs 源码仓库当前 CI:

  • Node 22
  • Node 24
  • Node 26

当前构建 CLI 建议使用 Node.js 22.13+ 或 24+。上游 CI 对 Bun 仅作尽力验证;Deno 不在阻塞式原生扩展矩阵中。

阅读完整支持约定 →
模板生成的构建目标
ia32x64arm64armWASI
Windows MSVC
macOS
Linux glibc
Linux musl
FreeBSD
Android
WebAssembly

包含在维护中的脚手架构建与打包矩阵中。

未包含在维护中的脚手架内;可能需要手动支持,也可能不可用。

可接受的目标与测试覆盖范围 →

请阅读支持与兼容性,了解 Node-API 等级、运行时、模板目标和 CI 覆盖范围之间的区别。

相关项目