diff options
| author | 8cy <[email protected]> | 2020-04-03 02:37:42 -0700 |
|---|---|---|
| committer | 8cy <[email protected]> | 2020-04-03 02:37:42 -0700 |
| commit | 60867fb030bae582082340ead7dbc7efdc2f5398 (patch) | |
| tree | 4c6a7356351be2e4914e15c4703172597c45656e /node_modules/node-addon-api/doc/setup.md | |
| parent | commenting (diff) | |
| download | s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.tar.xz s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.zip | |
2020/04/03, 02:34, v1.2.0
Diffstat (limited to 'node_modules/node-addon-api/doc/setup.md')
| -rw-r--r-- | node_modules/node-addon-api/doc/setup.md | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/node_modules/node-addon-api/doc/setup.md b/node_modules/node-addon-api/doc/setup.md new file mode 100644 index 0000000..3135bf1 --- /dev/null +++ b/node_modules/node-addon-api/doc/setup.md @@ -0,0 +1,82 @@ +# Setup + +## Prerequisites + +Before starting to use **N-API** you need to assure you have the following +prerequisites: + +* **Node.JS** see: [Installing Node.js](https://nodejs.org/) + +* **Node.js native addon build tool** + + - **[node-gyp](node-gyp.md)** + +## Installation and usage + +To use **N-API** in a native module: + + 1. Add a dependency on this package to `package.json`: + +```json + "dependencies": { + "node-addon-api": "*", + } +``` + + 2. Reference this package's include directory and gyp file in `binding.gyp`: + +```gyp + 'include_dirs': ["<!@(node -p \"require('node-addon-api').include\")"], + 'dependencies': ["<!(node -p \"require('node-addon-api').gyp\")"], +``` + + 3. Decide whether the package will enable C++ exceptions in the N-API wrapper. + The base ABI-stable C APIs do not throw or handle C++ exceptions, but the + N-API C++ wrapper classes may _optionally_ + [integrate C++ and JavaScript exception-handling + ](https://nodejs.github.io/node-addon-api/class_napi_1_1_error.html). + To enable that capability, C++ exceptions must be enabled in `binding.gyp`: + +```gyp + 'cflags!': [ '-fno-exceptions' ], + 'cflags_cc!': [ '-fno-exceptions' ], + 'xcode_settings': { + 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES', + 'CLANG_CXX_LIBRARY': 'libc++', + 'MACOSX_DEPLOYMENT_TARGET': '10.7', + }, + 'msvs_settings': { + 'VCCLCompilerTool': { 'ExceptionHandling': 1 }, + }, +``` + + Alternatively, disable use of C++ exceptions in N-API: + +```gyp + 'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ], +``` + 4. If you would like your native addon to support OSX, please also add the + following settings in the `binding.gyp` file: + + ```gyp + ['OS=="mac"', { + 'cflags+': ['-fvisibility=hidden'], + 'xcode_settings': { + 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden + } + }] + ``` + + 5. 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`. + +```C++ +#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. + +The preprocessor directive `NODE_ADDON_API_DISABLE_DEPRECATED` can be defined at +compile time before including `napi.h` to skip the definition of deprecated APIs. |