Compiling your Node.js application into a single executable.
Node.js Compiler: compiling your Node.js application into a single executable.
Project | Differences |
---|---|
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 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. Asar uses JSON to store files' information while Node.js Compiler uses SquashFS. |
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.6/nodec-darwin-x64/download > nodec
chmod +x nodec
./nodec
First install the prerequisites:
- SquashFS Tools 4.3
gcc
andg++
4.9 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.6/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
--auto-update-url=URL Enables auto-update and specifies the URL to get the latest version
--auto-update-base=STRING Enables auto-update and specifies the base version string
--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.