Skip to content
Use Node.js in your end devices :)
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github meta: add github issue template list (#310) Aug 19, 2018
benchmark Revert "module: add require.resolve (#445)" (#485) Jan 16, 2019
cmake build: install headers on static build (#518) May 7, 2019
config build: set DerivePointerAlignment to false (#279) Aug 10, 2018
deps n-api: add napi_create_symbol support (#506) Mar 28, 2019
docs n-api: add napi_create_symbol support (#506) Mar 28, 2019
include n-api: update headers/test suites to LTS(10.13.0) (#416) Nov 21, 2018
profiles build: add platform linux-android (#493) Feb 25, 2019
samples lint: covers src/benchmark/samples (#410) Nov 9, 2018
src build: install headers on static build (#518) May 7, 2019
test build(deps): bump mqtt-packet from 3.5.0 to 3.5.1 in /test/deps (#519) May 23, 2019
tools build: add platform linux-android (#493) Feb 25, 2019
.clang-format build: set DerivePointerAlignment to false (#279) Aug 10, 2018
.codacy.yaml deps: upgrade the mbedtls to 2.13.0-apache (#384) Nov 28, 2018
.eslintignore build, test: enable eslint on tests (#509) Mar 29, 2019
.eslintrc.js build: add clang/cmake/shell/js linters and fixups (#128) May 25, 2018
.gitignore module: fix NODE_MODULE environment works (#257) Aug 8, 2018
.travis.yml ci: fix the travis deploy reponame (#514) Apr 14, 2019
CMakeLists.txt build: add platform linux-android (#493) Feb 25, 2019
CODE_OF_CONDUCT.md add CODE_OF_CONDUCT.md (#423) Dec 12, 2018
LICENSE Modify copyright in LICENSE and add guide for contributor (#584) Dec 14, 2016
README.md readme: polishing readme statements (#437) Dec 13, 2018
build.config jerry: implement source info and remove function_name feature (#390) Nov 8, 2018
package.json working on v0.11.x (#434) Dec 4, 2018
yarn.lock test: pull napi tests from nodejs source (#266) Aug 13, 2018

README.md

ShadowNode

The Node.js runtime in shadow, enables N-API and vast Node.js packages on edge devices.

Codacy Badge Build Status License FOSSA Status

The project is another runtime for your Node.js packages, while ShadowNode is designed to be used on memory limited devices. It's inspired and forked from the awesome project Samsung/iotjs.

Quick Start

To get started with ShadowNode, you could download prebuilt binaries on Release Page for following targets:

  • Linux x64
  • macOS x64

Memory usage and binary footprint are measured at here with real target daily.

Documentation

Build

Fetch source code
$ git clone https://github.com/Rokid/ShadowNode.git
$ cd ShadowNode
Build ShadowNode
$ npm run build
Get available build options
$ tools/build.py --help
Install
$ tools/build.py --install
Run tests
$ npm test

For additional information see Getting Started.

Compared with Node.js

ShadowNode is not designed to be ran identical code that ran on Node.js. While edge environments are experiencing limited resources on runtime, the packages to be ran on ShadowNode shall be rewritten in a resource compact way. However for the very initial thought of sharing the Node.js vast module ecosystem, we would like make ShadowNode compatible with Node.js with our efforts.

Since the MQTT protocol is commonly used for communication between IoT devices, ShadowNode supports the protocol natively, and keeps the API consistent with the popular library MQTT.js. See MQTT API for details.

The WebSocket is a popular protocol in IoT environment as well, and also supported by ShadowNode natively. See WebSocket API.

For hardware geek, this project benefits from the upstream IoT.js, which has supported the following hardware interfaces, you are able to port ShadowNode to your platforms and start hacking with JavaScript:

License

ShadowNode is Open Source software under the Apache 2.0 license. Complete license and copyright information can be found within the code.

You can’t perform that action at this time.