meta-nodejs
meta-nodejs copied to clipboard
OpenEmbedded layer for latest Node.js releases
meta-nodejs 
OpenEmbedded layer for latest Node.js releases.
:information_source: As an official extension of this layer, installing meta-nodejs-contrib is highly recommended for community contributed Node.js based package recipes and Bitbake helper classes.
Node.js releases

Dependencies
meta-nodejs depends on following layers:
Cross-compiling for 32-bit target on 64-bit host
Node.js v7+ ships with V8 v5.5+ that requires native (host) compilation of some internal build tools (mkpeephole and mksnapshot).
These internal tools must be built with "bitness" matching the cross-compilation target (eg. 32-bit ARM).
If you encounter build errors related to mkpeephole or mksnapshot you most likely need to install appropriate multilib compilers and libraries to to your host system.
Example
Prerequisites for compiling for 32-bit ARM with x86_64 Ubuntu 16.04 Xenial (or newer):
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install g++-multilib libssl-dev:i386 libcrypto++-dev:i386 zlib1g-dev:i386
Available Packages
nodejsnodejs-npmnodejs-dtracenodejs-systemtapnodejs-wafadmin(only with Node.js0.8)
Installation
Layer installation varies depending on your OpenEmbedded distribution. These instructions are generic.
-
Fetch
meta-nodejslayer fromhttps://github.com/imyller/meta-nodejs.git -
Add
meta-nodejslayer toEXTRALAYERSinconf/bblayers.conf. For example:EXTRALAYERS +=" \ ${TOPDIR}/sources/meta-nodejs \ "
Recommended layers
As an official extension of this layer, installing meta-nodejs-contrib is highly recommended for community contributed Node.js based package recipes and Bitbake helper classes.
Usage
Building Node Packages
To build latest stable Node.js package:
bitbake nodejs
Node.js as a dependency
Add Node.js as a dependency in recipe with RDEPENDS (for runtime) or DEPENDS (for build):
DEPENDS += " nodejs"
RDEPENDS_${PN} += " nodejs"
npm install buildable recipes
Inherit npm-install build task class in your recipe.
Bitbake classes
meta-nodejs layer adds few Node.js related helper classes.
npm-base class
npm-base class defines following functions:
oe_runnpm: call cross-compilingnpmoe_runnpm_native: call native-compilingnpm
For example:
inherit npm-base
do_install() {
oe_runnpm install # Installs dependencies defined in package.json
}
Variables
NPM_FLAGS: Extra command line arguments fornpmcalls made byoe_runnpm()NPM_ARCH: Override npm target architecture (defaults toTARGET_ARCH)NPM_REGISTRY: override npm registry URL
npm-install class
npm-install class inherits npm-base class and adds following build tasks (listed in their run order):
npm_install: runsnpm installin source directorynpm_shrinkwrap: runsnpm shrinkwrapin source directorynpm_dedupe: runsnpm dedupein source directory
You can disable one or more of these build tasks in the recipe with do_<taskname>[noexec] = "1":
do_npm_shrinkwrap[noexec] = "1"
Variables
NPM_INSTALL_FLAGS: Extra command line arguments fornpmcalls made innpm_installtaskNPM_INSTALL: Parameters fornpm installcommand (such as specific package names)
npm-install-global class
npm-install-global class inherits npm-base class and installs the selected package globally.
This is done in the do_install task of the class.
Variables
NPM_INSTALL_FLAGS: Extra command line arguments fornpmcalls made indo_installanddo_configuretask