napi / Build

The napi-build crate is used for the build part.

A build.rs file is in the crate/package where you want to generate bindings from src/lib.rs.

The build.rs will only contain this kind of code:

extern crate napi_build;

fn main() {
    napi_build::setup();
}

Then, you will call something like:

napi build --platform --release

Which will generate:

  • the binaries for the targeted platforms
  • the bindings:
    • .d.ts TypeScript decleration files
    • .js glue code to load and bind the binary to JavaScript runtime

When running it from a task in a package.json, a configuration can be passed to a napi field

https://napi.rs/docs/introduction/simple-package