配置
napi 配置已经变更,name 字段现为 binaryName。
napi.name -> napi.binaryName
{
"name": "@napi-rs/package-template",
"version": "1.0.0",
"napi": {
- "name": "my-package",
+ "binaryName": "my-package",
}
}
napi.triples -> napi.targets
triples 配置已经移除,需要改用 targets。
以前 triples.default 包含:
"x86_64-unknown-linux-gnu",
"x86_64-pc-windows-msvc",
"x86_64-apple-darwin"
现在需要将它们加入 targets 配置。
{
"name": "@napi-rs/package-template",
"version": "1.0.0",
"napi": {
- "triples": {
- "default": true,
- "additional": [
- "aarch64-apple-darwin",
- "x86_64-unknown-linux-musl",
- "aarch64-unknown-linux-musl"
- ]
- }
+ "targets": [
+ "x86_64-unknown-linux-gnu",
+ "x86_64-pc-windows-msvc",
+ "x86_64-apple-darwin",
+ "aarch64-apple-darwin",
+ "x86_64-unknown-linux-musl",
+ "aarch64-unknown-linux-musl"
+ ]
}
}
CLI 破坏性变更
CLI 已经重写。
--cargo-cwd 已移除,请使用 --manifest-path 指向 Cargo.toml 路径:
- napi build --cargo-cwd ./crates/napi
+ napi build --manifest-path ./crates/napi/Cargo.toml
以前,napi build 中的标志相对于 --cargo-cwd || process.cwd();现在它们相对于 --cwd || process.cwd()。
已移除 --cargo-flags
--cargo-flags 选项已经移除。现在,-- 之后的标志会透传给 cargo build 命令:
- napi build --cargo-flags="--locked"
+ napi build -- --locked
--locked 会传给 cargo build,最终执行 cargo build --locked。
create-npm-dir 重命名为 create-npm-dirs
更多细节参见 create-npm-dirs。
除命令名和标志变化外,现在也不再建议提交所有 npm/* 文件。可以在 CI 中使用 napi create-npm-dirs 创建 npm/ 文件,例如:https://github.com/napi-rs/package-template/blob/main/.github/workflows/CI.yml#L358
napi universal 重命名为 napi universalize
更多细节参见 universalize。
napi crate
部分 JsValue 现在位于 compat-mode feature flag 之后
完整列表如下:
JsObjectJsFunctionJsNullJsBooleanJsUndefinedJsBufferJsBufferViewJsArrayBufferJsArrayBufferViewJsTypedArrayJsBigintRef
这些 API 不安全;详情参见 V3 中的生命周期。
如果正在使用这些 API,需要启用 compat-mode feature flag,但不推荐这样做。
可以迁移到新 API。更多细节参见值、函数、引用和 TypedArray。
ThreadsafeFunction
ThreadsafeFunction 已经完全重写。背景参见 V3 中的 ThreadsafeFunction。
新 API 文档见 ThreadsafeFunction。
napi::module_init 移至 napi_derive::module_init
这是由上游 ctor crate 的破坏性变更引起的。
napi_derive crate
新增 #[napi(module_exports)]
它用于替代 compat-mode 中的 #[module_exports] 宏。现在可以移除 napi-derive 的 compat-mode feature,只使用现代 #[napi] 宏。