将你的node.js 应用程序打包为单个可执行文件

・8 分钟阅读

  • 源代码名称: node-packer
  • 源代码网址: https://www.github.com/pmq20/node-packer
  • node-packer的文档
  • node-packer的源代码下载
  • Git URL:
    git://www.github.com/pmq20/node-packer.git
  • Git Clone代码到本地:
    git clone https://www.github.com/pmq20/node-packer
  • Subversion代码到本地:
    $ svn co --depth empty https://www.github.com/pmq20/node-packer
                              Checked out revision 1.
                              $ cd repo
                              $ svn up trunk
              
  • Node.js Packer

    将你的Node.js应用程序打包为单个可执行文件。

    Build statusStatusGitHub version

    Terminal simulation of a simple compilation

    特性

    • 在Linux,mac和Windows上工作
    • 创建应用程序的二进制分发
    • 支持任何形式的require,包括动态(例如require(myPath +'module.js' )
    • 支持任何模块,包括从npm直接下载和编译,
    • 完全支持本机C++模块
    • 功能零配置,自动更新功能,使编译后的项目保持最新状态,
    • 开放源代码,MIT授权

    启动

    使用node-compiler编译项目花费时间少于5分钟。

    你不需要修改应用程序中的单行代码,无论你如何开发它,只要它能在普通的node.js中工作即可!

    操作系统架构,最新稳定版本
    Windowsx86-64http://enclose.io/nodec/nodec-x64.zip
    macOSx86-64http://enclose.io/nodec/nodec-darwin-x64.gz
    Linuxx86-64http://enclose.io/nodec/nodec-linux-x64.gz

    以前的版本,cfhttp://enclose.io/nodec。

    在Windows上安装

    首先安装先决条件:

    • SquashFS Tools 4.3
    • python 2.6或2.7
    • 其中之一
      • Visual Studio 2015 Update 3,包括社区版的所有版本,请记住,在安装过程中选择Visual C 2015常用工具,
      • Visual Studio 2017,任何版本(包括构建工具SKU ),必需组件:"MSbuild ","VC 2017 v141工具集"和Windows SDK(10或8.1)。

    然后下载nodec-x64.zip,这个zip文件只包含一个可执行文件,将其解压缩,可选择将其重命名为nodec.exe,并将其置于C:Windows (或任何属于PATH的其他目录)下,从命令行执行nodec

    在Linux上安装

    首先安装先决条件:

    • SquashFS Tools 4.3
      • sudo yum install squashfs-tools
      • sudo apt-get install squashfs-tools
    • gcc和g 4.9.4或更高版本
    • clangclang++ 3.4.2或更高版本
    • Python 2.6或2.7
    • GNU Make 3.81或更新版本

    然后,

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

    在macOS上安装

    首先安装先决条件:

    • SquashFS Tools 4.3brew install squashfs
      • 你还需要通过Xcode安装Command Line Tools ,你可以在菜单下面找到这个 Xcode -> Preferences -> Downloads
      • 这个步骤将安装gcc和包含make的相关工具链
    • Python 2.6或2.7
    • GNU Make 3.81或更新版本

    然后,

    
    curl -L http://enclose.io/nodec/nodec-darwin-x64.gz | gunzip > 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
    
    
     --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
    
    
    
    

    注意:如果没有提供ENTRANCE,那么将生成一个Node.js解释器可执行文件。

    注意:要在64位计算机上编译为32位Windows OS兼容程序,应使用x64 x32交叉编译环境。你应该能够在安装Visual Studio之后,在你的开始菜单中找到它,另外,你必须使用32位的node.js,因为arch信息是通过node -pe process.arch检测到的。

    例子

    编译一个CLI工具

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

    编译一个网络应用程序

    
    git clone --depth 1 https://github.com/eggjs/examples.git
    
    
    cd examples/helloworld
    
    
    npm install
    
    
    nodec node_modules/egg-bin/bin/egg-bin.js
    
    
    ./a.out dev (or a.exe dev on Windows)
    
    
    
    

    编译一个npm软件包

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

    学习更多

    如何工作

    • node.js编译器,将node.js应用程序编译为单个可执行文件 ,

    与类似项目的比较

    项目差异
    pkgfram动态地进入fs.*,以便在包文件中访问,而Node.js编译器通过libsquash 在更深层次上工作,Pkg使用JSON来存储包文件,而Node.js编译器使用更加复杂和广泛使用的SquashFS作为它数据结构。
    encloseJSEncloseJS将对包文件的访问限制为仅仅五个fs.*API,而Node.js编译器支持所有fs.*API,EncloseJS是专有许可证,使用时收费,而node.js编译器是MIT许可证,用户既可以自由使用也可以自由修改。
    nexeNexe不支持动态require,因为它使用browserify而Node.js编译器支持所有类型的require包括require.resolve
    asarAsar保持代码存档和可执行文件分离,而Node.js编译器将所有JavaScript源代码与Node.js虚拟机链接在一起,并生成单个可执行文件作为最终产品。Asar使用JSON存储文件的信息,而Node.js编译器使用SquashFS。
    appImageAppImage只支持带有支持SquashFS的内核的Linux,而Node.js编译器支持Linux,macOS和Windows三个平台,同时不需要依赖内核的任何特殊功能需求。

    请参见

    • libsquash :可移植的SquashFS,可以在应用程序中轻松链接和嵌入。
    • libautoupdate :跨平台的C库,使你的应用程序能够自动更新自身。
    讨论
    Fansisi profile image