如何将Node.js应用程序部署为单个可执行文件?

假设我已经写了一个Node.js应用程序,现在我想分发它。 当然,我想让用户容易,因此我不希望他安装Node.js,运行npm install ,然后手动inputnode app.js

我更喜欢一个单一的可执行文件,例如Windows上的.exe文件。

我怎么能这样做?

我知道这个线程 ,反正这只是关于Windows。 我怎样才能以平台无关的方式实现这一点? 有任何想法吗? 最佳实践? …?

完美的解决scheme是我可以给一个源文件夹的“编译器”。 源文件夹包含各种.js文件中的应用程序本身, node_modules文件夹和一些元数据(如package.json 。 输出应该是各种平台的二进制文件,如Windows,OS X和Linux。

呵呵,什么是重要的:我不想对源代码做任何改变,所以即使这个相对path现在在打包的应用程序中,调用相对path也require工作。

有任何想法吗?

PS:我不希望用户独立安装Node.js,它也应该包含在可执行文件中。

同时,我发现(对我来说)完美的解决scheme: nexe ,它从一个包含所有模块的Node.js应用程序创build一个单一的可执行文件。

尽pipe目前它有一些缺点(不能在Windows上运行,并且不支持二进制模块),但它是理想解决scheme的下一个最好的事情。

首先,我们正在讨论打包一个Node.js应用程序的研讨会,演示等,它可以很方便地让应用程序“只是运行”,而不需要最终用户关心安装和依赖关系。

您可以尝试以下设置:

  1. 获取您的应用程序源代码
  2. npm install所有依赖项(通过package.json) npm install本地 node_modules目录。 在二进制依赖关系的情况下,在每个想要单独支持的平台上执行这一步是非常重要的。
  3. 将Windows上的Node.js二进制文件(可能是) / OS X / Linux上的/ usr / local / bin / node复制到项目的根文件夹中。 在OS X / Linux上,您可以find与which node的Node.js二进制文件的位置。

对于Windows:
创build一个自解压存档, 7zip_extra支持在解压后立即执行命令的方法,请参阅: http : //www.msfn.org/board/topic/39048-how-to-make-a-7-zip-switchless- 安装程序/ 。

对于OS X / Linux:
你可以使用像makeself或unzipsfx这样的工具(我不知道这是否使用默认定义的CHEAP_SFX_AUTORUN进行编译)。

这些工具将提取存档到临时目录,执行给定的命令(例如node app.js )并在完成时删除所有文件。

不要打死马,但是你描述的解决scheme听起来很像Node-Webkit 。

从Git页面:

node-webkit是基于Chromium和node.js的应用程序运行时。 您可以使用node-webkit在HTML和JavaScript中编写本机应用程序。 它还使您可以直接从DOM调用Node.js模块,并支持使用所有Web技术编写本地应用程序的新方法。

这些指令详细说明了用户可以执行的单个文件应用程序的创build过程, 这部分描述了外部依赖关系。

我不确定这是否是确切的解决scheme,但看起来非常接近。

希望能帮助到你!

JXcore将允许您将任何nodejs应用程序转换为单个可执行文件,包括Windows,Linux或Mac OS X中的所有依赖项。

这是一个链接到安装程序: https : //github.com/jxcore/jxcore-release

这里是如何设置它的链接: http : //jxcore.com/turn-node-applications-into-executables/

这是非常容易使用,我已经在Windows 8.1和Ubuntu 14.04testing。

仅供参考:JXcore是NodeJS的一个分支,所以它是100%的NodeJS兼容的,有一些额外的function。

除了nexe之外, browserify可以用来将所有的依赖关系打包成一个.js文件。 这不捆绑实际的节点可执行文件,只是处理JavaScript的一面。 它也不处理本地模块。 纯节点编译的命令行选项是browserify --output bundle.js --bare --dg false input.js

您需要经过许多步骤才能创build安装程序,并且每个操作系统都有所不同。 例如:

  • 在Mac OS X上,您需要创build一个.pkg ,有关于如何在此处执行操作的说明: https : //coolaj86.com/articles/how-to-create-an-osx-pkg-installer.html
  • 在Ubuntu Linux上,你需要创build一个.deb ,这里有如何做到这一点的说明: https : //coolaj86.com/articles/how-to-create-a-debian-installer.html
  • 在Microsoft Windows上,您需要创build一个.exe.msi ,这里有如何使用innosetup安装程序的说明: https ://coolaj86.com/articles/how-to-create-an-innosetup-installer.html

我尝试着使用自己,并取得了成功。 没有问题呢。 logging的步骤@ https://www.linkedin.com/pulse/article/deploying-nodejs-single-executableruntime-amit-gupta

你可以创build一个git仓库,并build立一个到git仓库的链接作为依赖。 然后任何克隆回购的用户也可以安装节点。

 #git submodule [--quiet] add [-b branch] [-f|--force] git submodule add /var/Node-repo.git common 

你可以轻松地打包一个脚本来自动克隆你在某个地方托pipe的git仓库,并从一个脚本文件中“安装”。

 #!/bin/sh #clone git repo git clone your-repo.git