Helpers for Node.js addons and dependency packages
Go to file
Luis Blanco 46e82f8ea8 wip doc 2019-11-08 23:36:29 +03:00
doc wip doc 2019-11-08 23:36:29 +03:00
include wip docs 2019-11-08 17:06:51 +03:00
test Use package files instead of npmignore 2019-08-10 15:48:27 +03:00
.eslintrc add shortcut types 2018-03-26 14:19:22 +03:00
.gitignore Update ignore 2019-08-07 10:08:36 +03:00
.travis.yml Update ignore 2019-08-07 10:08:36 +03:00
LICENSE fix windows bats 2018-01-30 11:26:47 +03:00
README.md wip docs 2019-11-08 17:06:51 +03:00
cpbin.js Add cpbin script 2019-09-17 11:17:57 +03:00
download.js wip new arch 2019-08-05 00:47:25 +03:00
index.js wip docs 2019-11-08 17:06:51 +03:00
install.js Fix install 2019-08-06 16:51:55 +03:00
package-lock.json Update ignore 2019-08-07 10:08:36 +03:00
package.json wip docs 2019-11-08 17:06:51 +03:00
writable-buffer.js wip new arch 2019-08-05 00:47:25 +03:00

README.md

Addon Tools

This is a part of Node3D project.

NPM

Build Status CodeFactor

npm i addon-tools-raub

Synopsis

This module contains numerous helpers for Node.js NAPI addons and dependency packages. In this file, helper scripts are described. For details on addon-tools.hpp and some additional snippets follow the links below.

Go to:

index.js

Main exports for cross-platform addon configuration.

  • paths(dir) - function. Returns a set of platform dependent paths depending on input dir.
    • bin - platform binary directory absolute path.
    • include - include directory for this dir.
  • include - both 'addon-tools-raub' and 'node-addon-api' include paths. Use with node -p through list context command expansion <!@(...).
  • bin - platform-dependent binary directory name.
  • platform - platform name: 'windows', 'linux', 'osx'.

download.js

Downloads a file into the memory, HTTP or HTTPS. async WritableBuffer download(string url) - accepts an URL, and returns an in-memory buffer, when file is loaded.

Example use:

download(srcUrl).then(
	data => useData(data),
	err => emit('error', err)
);
// or
const data = await download(srcUrl);
useData(data);

cpbin.js

Copies the addon binary from src/build/Release to the platform folder. It is useful for development builds. Use it in your src/package.json:

	"scripts": {
		"build": "node-gyp rebuild && node -e \"require('addon-tools-raub/cpbin')('ADDON')\""
	},

Here ADDON should be replaced with the name of your addon, without .node extension.

install.js

Downloads and unzips the platform specific binary for the calling package. To use it, create a new script for your package, which may as well be named install.js, with the following content:

'use strict';
const install = require('addon-tools-raub/install');
const prefix = 'https://github.com/USER/ADDON-NAME/releases/download';
const tag    = process.env.npm_package_config_install;
install(`${prefix}/${tag}`);

prefix - the constant base part of the download url. tag - the version-dependent part of the url, here process.env.npm_package_config_install is taken (automatically) from package.json:

	"config": {
		"install": "v2.0.0"
	},
	"scripts": {
		"postinstall": "node install"
	},

writable-buffer.js

A Writable stream buffer, that is stored in-memory and can be fully obtained when writing was finished. It is equivalent to stream-writing a temporary file and then reading it into a Buffer.

Use stream.get() to obtain the data when writing was finished:

const stream = new WritableBuffer();
// ...
sourceStream.pipe(stream);
sourceStream.on('end', () => useData(stream.get()));