Skip to content

hebertcisco/cpp-npm-package-boilerplate

Repository files navigation

:package: cpp-npm-package-boilerplate

📦 cpp-npm-package-boilerplate

A boilerplate for creating a C++ npm package

Issues GitHub pull requests GitHub Downloads GitHub Total Downloads GitHub release

Report Bug Request Feature

Systems on which it has been tested:

Ubuntu

Did you like the project? Please, considerate a donation to help improve!

A boilerplate for creating a C++ npm package

Getting started

Node.js build and publish package

Running Code Coverage

TypeScript Nodejs C++

NPM Free. Built on open source. Runs everywhere. GitHub Actions

Installation(Example purposes)

Install with yarn or npm: yarn or npm:

# yarn
yarn add cpp-npm-package-boilerplate
# npm
npm i cpp-npm-package-boilerplate --save

Usage example

import { helloNative } from 'cpp-npm-package-boilerplate';

console.log(helloNative('C++')); // Hello C++

Note: This is example is a binding of the C++ function helloNative to the JavaScript function helloNative.

C++ function

#include <napi.h>

Napi::String Method(const Napi::CallbackInfo &info)
{
    Napi::Env env = info.Env();
    return Napi::String::New(env, "world");
}

Napi::Object Init(Napi::Env env, Napi::Object exports)
{
    exports.Set(Napi::String::New(env, "hello"),
                Napi::Function::New(env, Method));
    return exports;
}

NODE_API_MODULE(hello, Init)

JavaScript function

import bindings from 'bindings';
export const helloNative = bindings('hello.node').hello;

TypeScript implementation

import bindings from 'bindings';

type THelloNative = (string: string) => string;

export const helloNative: THelloNative = bindings('hello.node').hello;

🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page.

Show your support

Give a ⭐️ if this project helped you!

Or buy me a coffee 🙌🏾

📝 License

Copyright © 2023 Hebert F Barros.
This project is MIT licensed.