博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node-packer
阅读量:6946 次
发布时间:2019-06-27

本文共 6081 字,大约阅读时间需要 20 分钟。

http://enclose.io/

https://github.com/pmq20/node-packer

Node.js Packer

Packing your Node.js application into a single executable.

Features

  • Works on Linux, Mac and Windows
  • Creates a binary distribution of your application
  • Supports natively any form of require, including dynamic ones (e.g. require(myPath + 'module.js')
  • Supports any module, including direct download and compilation from npm
  • Native C++ modules are fully supported
  • Features zero-config auto-update capabilities to make your compiled project to stay updated
  • Open Source, MIT Licensed

Get Started

It takes less than 5 minutes to compile any project with node-compiler.

You won't need to modify a single line of code in your application, no matter how you developed it as long as it works in plain node.js!

Operating System Architecture Latest Stable
Windows x86-64
macOS x86-64
Linux x86-64

For previous releases, cf. 

Install on Windows

First install the prerequisites:

  • Either of,
    • , all editions including the Community edition (remember to select "Common Tools for Visual C++ 2015" feature during installation).
    • , any edition (including the Build Tools SKU). Required Components: "MSbuild", "VC++ 2017 v141 toolset" and one of the Windows SDKs (10 or 8.1).

Then download , and this zip file contains only one executable. Unzip it. Optionally, rename it to nodec.exe and put it under C:\Windows (or any other directory that is part of PATH). Execute nodec from the command line.

Install on Linux

First install the prerequisites:

    • sudo yum install squashfs-tools
    • sudo apt-get install squashfs-tools
  • gcc and g++ 4.9.4 or newer, or
  • clang and clang++ 3.4.2 or newer
  • Python 2.6 or 2.7
  • GNU Make 3.81 or newer

Then,

curl -L http://enclose.io/nodec/nodec-linux-x64.gz | gunzip > nodecchmod +x nodec./nodec

Install on macOS

First install the prerequisites:

  • brew install squashfs
    • You also need to install the Command Line Tools via Xcode. You can find this under the menu Xcode -> Preferences -> Downloads
    • This step will install gcc and the related toolchain containing make
  • Python 2.6 or 2.7
  • GNU Make 3.81 or newer

Then,

curl -L http://enclose.io/nodec/nodec-darwin-x64.gz | gunzip > nodecchmod +x nodec./nodec

Usage

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      --skip-npm-install           Skips the npm install process      --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      --msi                        Generates a .msi installer for Windows      --pkg                        Generates a .pkg installer for macOS      --debug                      Enable debug mode      --quiet                      Enable quiet mode  -v, --version                    Prints the version of nodec and exit  -V, --node-version               Prints the version of the Node.js runtime and exit  -h, --help                       Prints this help and exit

Note: if ENTRANCE was not provided, then a single Node.js interpreter executable will be produced.

Note: To compile to 32-bit windows OS compatible programs on a 64-bit machine, you should use a x64 x32 cross compiling environment. You should be able to find it in your Start Menu after installing Visual Studio. Also, you have to use a 32-bit Node.js, because the arch information is detected via node -pe process.arch.

Examples

Compile a CLI tool

git clone --depth 1 https://github.com/jashkenas/coffeescript.gitcd coffeescriptnodec bin/coffee./a.out (or a.exe on Windows)

Compile a web application

git clone --depth 1 https://github.com/eggjs/examples.gitcd examples/helloworldnpm installnodec node_modules/egg-bin/bin/egg-bin.js./a.out dev (or a.exe dev on Windows)

Compile a npm package

nodec --npm-package=coffee-script coffee./a.out (or a.exe on Windows)

Learn More

How it works

  • .

Comparing with Similar Projects

Project Differences
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 . 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 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 does not support dynamic require because of its use of browserify, whereas Node.js Compiler supports all kinds of require including require.resolve.
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 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.

See Also

  • : portable, user-land SquashFS that can be easily linked and embedded within your application.
  • : cross-platform C library to enable your application to auto-update itself in place.

转载地址:http://bzenl.baihongyu.com/

你可能感兴趣的文章
【安全牛学习笔记】信息收集--DNS
查看>>
Linux 第11天: (08月17日) 练习和作业
查看>>
Install Latest Versions NodeJS NPM on ubuntu
查看>>
Linux常用命令——crontab
查看>>
Discuz! X2 下 URL 静态化的实现方法
查看>>
mongodb删除重复数据
查看>>
项目中常用的第三方框架总结
查看>>
希尔排序
查看>>
nginx 配置支持think php url模式
查看>>
我的友情链接
查看>>
centos7.2下搭建CDH5.8.3
查看>>
Django返回json数据
查看>>
橡皮泥_愤怒的小鸟
查看>>
虚拟机性能测试:六 Oracle VM VirtualBox
查看>>
加班真的有意义吗
查看>>
Redis
查看>>
测试代码插件
查看>>
CentOS6.5最小化安装,自定义安装包
查看>>
hello world!
查看>>
从ASM迁移到ARM(1):平台支持的迁移服务
查看>>