Configuração
A configuração napi mudou: o campo name agora é 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
A configuração triples foi removida, e agora você precisa definir targets.
Os triples.default de antes eram:
"x86_64-unknown-linux-gnu",
"x86_64-pc-windows-msvc",
"x86_64-apple-darwin"
Agora você precisa adicioná-los à configuração 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"
+ ]
}
}
Mudanças incompatíveis na CLI
A CLI foi reescrita.
--cargo-cwd foi removido. Você precisa usar --manifest-path para apontar o
caminho do Cargo.toml:
- napi build --cargo-cwd ./crates/napi
+ napi build --manifest-path ./crates/napi/Cargo.toml
Antes, as flags em napi build eram relativas a --cargo-cwd || process.cwd();
agora elas são relativas a --cwd || process.cwd().
--cargo-flags removido
A opção --cargo-flags foi removida. Agora as flags depois de -- serão
encaminhadas para o comando cargo build:
- napi build --cargo-flags="--locked"
+ napi build -- --locked
A flag --locked será passada para cargo build, resultando em
cargo build --locked.
create-npm-dir foi renomeado para create-npm-dirs
Veja create-npm-dirs para mais detalhes.
Além das mudanças no nome do comando e nas flags, não é mais recomendado fazer
commit de todos os arquivos npm/*. Você pode usar napi create-npm-dirs para
criar os arquivos em npm/ na CI, assim:
https://github.com/napi-rs/package-template/blob/main/.github/workflows/CI.yml#L358
napi universal foi renomeado para napi universalize
Veja universalize para mais detalhes.
Crate napi
Alguns JsValues agora ficam atrás da feature flag compat-mode
Esta é a lista completa desses valores:
JsObjectJsFunctionJsNullJsBooleanJsUndefinedJsBufferJsBufferViewJsArrayBufferJsArrayBufferViewJsTypedArrayJsBigintRef
Essas APIs não são seguras; veja Lifetime in V3 para mais detalhes.
Se você estiver usando essas APIs, precisará habilitar a feature flag
compat-mode, mas isso não é recomendado.
Você pode migrar dessas APIs para as novas APIs. Veja Values, Function, Reference e TypedArray para mais detalhes.
ThreadsafeFunction
ThreadsafeFunction foi totalmente
reescrita. Veja ThreadsafeFunction in V3
para o contexto.
A nova documentação da API está aqui:
ThreadsafeFunction
napi::module_init foi movido para napi_derive::module_init
Isso ocorreu por causa de mudanças incompatíveis no crate upstream
ctor.
Crate napi_derive
novo #[napi(module_exports)]
Isto serve para substituir o macro #[module_exports] no compat-mode; agora
você pode remover a feature compat-mode de napi-derive e usar apenas macros
modernos #[napi].