JSPM

  • Created
  • Published
  • Downloads 27059585
  • Score
    100M100P100Q227110F
  • License MIT

Node.js API (N-API)

Package Exports

  • node-addon-api

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-addon-api) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Node.js API (N-API) Package

This package contains header-only C++ wrapper classes for the ABI-stable Node.js API (N-API), along with library code that enables backward-compatibility with use with older versions of Node.js that do not have N-API built-in.

To use N-API in a native module:

  1. Add a dependency on this package to package.json:
  "dependencies": {
    "node-addon-api": "github:nodejs/node-addon-api",
  }
  1. Reference this package's include directory and gyp file in binding.gyp:
  'include_dirs': ["<!(node -p \"require('node-addon-api').include\")"],
  'dependencies': ["<!(node -p \"require('node-addon-api').gyp\")"],
  1. Ensure C++ exceptions are enabled in binding.gyp. The N-API C++ wrapper classes use exceptions for error-handling; the base ABI-stable C APIs do not.
  'cflags!': [ '-fno-exceptions' ],
  'cflags_cc!': [ '-fno-exceptions' ],
  'xcode_settings': { 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES' },
  'msvs_settings': {
    'VCCLCompilerTool': { 'ExceptionHandling': 1 },
  },
  1. Include napi.h in the native module code. To ensure only ABI-stable APIs are used, DO NOT include node.h, nan.h, or v8.h.
#include "napi.h"

At build time, the N-API back-compat library code will be used only when the targeted node version does not have N-API built-in.

See the main project README or preliminary documentation for more details about N-API.

WG Members / Collaborators

Name GitHub link
Anna Henningsen @addaleax
Arunesh Chandra @aruneshchandra
Benjamin Byholm @kkoopa
Gabriel Schulhof @gabrielschulhof
Hitesh Kanwathirtha @digitalinfinity
Jason Ginchereau @jasongin
Michael Dawson @mhdawson
Sampson Gao @sampsongao
Taylor Woll @boingoing