Compiling your Node.js application into a single executable.
Master CI | RAM Test | Black‑box Test | Latest Stable | |
---|---|---|---|---|
Windows | https://sourceforge.net/projects/node-compiler/files/v0.9.5/nodec.exe/download | |||
macOS | https://sourceforge.net/projects/node-compiler/files/v0.9.5/nodec-darwin-x64/download | |||
Linux | https://sourceforge.net/projects/node-compiler/files/v0.9.5/nodec-linux-x64/download |
Node.js Compiler: compiling your Node.js application into a single executable.
Project | Difference |
---|---|
pkg | Pkg hacked fs.* API's dynamically in order to access in-package files, whereas Node.js Compiler leaves them alone and instead works on a deeper level via libsquash. Pkg uses JSON to store in-package files while Node.js Compiler uses the more sophisticated and widely used SquashFS as its data structure. |
EncloseJS | EncloseJS restricts access to in-package files to only five fs.* API's, whereas Node.js Compiler supports all fs.* API's. EncloseJS is proprietary licensed and charges money when used while Node.js Compiler is MIT-licensed and users are both free to use it and free to modify it. |
Nexe | Nexe does not support dynamic require because of its use of browserify , whereas Node.js Compiler supports all kinds of require including require.resolve . |
asar | Asar uses JSON to store files' information while Node.js Compiler uses SquashFS. Asar keeps the code archive and the executable separate while Node.js Compiler links all JavaScript source code together with the Node.js virtual machine and generates a single executable as the final product. |
AppImage | AppImage supports only Linux with a kernel that supports SquashFS, while Node.js Compiler supports all three platforms of Linux, macOS and Windows, meanwhile without any special feature requirements from the kernel. |
First install the prerequisites:
- SquashFS Tools 4.3
- Python 2.6 or 2.7
- Visual Studio 2015 Update 3, all editions including the Community edition (remember to select "Common Tools for Visual C++ 2015" feature during installation).
Then download the executable nodec.exe and run it from the VC++ or VS Command Prompt.
First install the prerequisites:
- SquashFS Tools 4.3:
brew install squashfs
- Xcode
- You also need to install the
Command Line Tools
via Xcode. You can find this under the menuXcode -> Preferences -> Downloads
- This step will install
gcc
and the related toolchain containingmake
- You also need to install the
- Python 2.6 or 2.7
- GNU Make 3.81 or newer
Then,
curl -L https://sourceforge.net/projects/node-compiler/files/v0.9.5/nodec-darwin-x64/download > nodec
chmod +x nodec
./nodec
First install the prerequisites:
- SquashFS Tools 4.3
gcc
andg++
4.8 or newer, orclang
andclang++
3.4 or newer- Python 2.6 or 2.7
- GNU Make 3.81 or newer
Then,
curl -L https://sourceforge.net/projects/node-compiler/files/v0.9.5/nodec-linux-x64/download > nodec
chmod +x nodec
./nodec
nodec [OPTION]... ENTRANCE
-r, --root=DIR Specifies the path to the root of the application
-o, --output=FILE Specifies the path of the output file
-d, --tmpdir=DIR Specifies the directory for temporary files
--clean-tmpdir Cleans all temporary files that were generated last time
--keep-tmpdir Keeps all temporary files that were generated last time
--make-args=ARGS Passes extra arguments to make
--vcbuild-args=ARGS Passes extra arguments to vcbuild.bat
-n, --npm=FILE Specifies the path of npm
--npm-package=NAME Downloads and compiles the specified npm package
--npm-package-version=VER Downloads and compiles the specified version of the npm package
--debug Enable debug mode
-v, --version Prints the version of nodec and exit
--node-version Prints the version of the Node.js runtime and exit
-h, --help Prints this help and exit
git clone --depth 1 https://github.com/jashkenas/coffeescript.git
cd coffeescript
nodec bin/coffee
./a.out (or a.exe on Windows)
- SquashFS: a compressed read-only filesystem for Linux.
- Libsquash: portable, user-land SquashFS that can be easily linked and embedded within your application.
- Enclose.IO: cloud-based service that compiles your application into a single executable.