将一个node.js webapp打包成一个普通的桌面应用程序

我已经search了一下,但找不到现有的工具。

我有一个node.js的networking服务器,是专为您自己的计算机上运行,​​为您做一些时髦的事情。 如果我可以双击MySnazzyThing.app而不是在命令行上安装nodejs,npm和运行node mysnazzyapp.js ,那node mysnazzyapp.js

.app可执行文件会打开节点服务器并打开一个简单的本地webkit窗口,如果我在命令行上运行,它将显示通常在localhost:3000上的内容。

然后,这个本地应用可以通过macapp store分发。 而巴姆,一个node.js桌面应用程序。

有这样的工具吗? 还是有任何技术上的原因,这不会像我想象的那样工作?

你可以使用AppJS完成这个工作: https : //github.com/appjs/appjs

选项1: 电子 (又名primefaces壳)

这是github的Atom编辑器使用的shell。 它与node-webkit非常相似,不过它将首先运行脚本,并且必须为用户创build一个视图/窗口。 还有一些其他的细微差别,但值得一看。


选项2: NW.js以前的node-webkit

要点是,它基本上扩展了JS引擎,为您编写支持节点的扩展对象模型和模块的基于Web的应用程序…然后,您将package.json start.html模块和js文件打包成一个zip文件.nw扩展名),并用nw(.exe)运行它..有Windows,Mac和Linux版本可用。


选项3: Thrust ( 节点适配器 )

这是一个真正失去约束的webkit / chrome与一个ipc通道启动应用程序。 您可以使用消息通道,也可以将应用程序编写为节点中更传统的服务器端应用程序,并控制窗口的启动。 这可能适合你。

Thrust已经绑定了多种语言。 我只把它放在MacGapNode之前,因为我首先倾向于使用跨平台的选项。


选项4: MacGapNode (仅限OSX)

MacGap与节点集成(似乎越来越陈旧了)


Aside:服务…

我不能说OSX作为一个.App,但是可以在NodeJS中创build一个后台服务安装,并且连接到桌面上的“本地”站点。 大多数浏览器有一个选项,不显示所有的function(我知道特别是Firefox的)。

我知道你的问题是特别针对OSX的,但是在windows中你可以使用NSSM作为一个服务来运行任何东西,并且我已经在windows中使用它来实现基于NodeJS的服务。 我想上面的其他一些select更好取决于你的需要,但。


删除:

  • nexe – 陈旧/无人维护
  • AppJS – 用DeskShellreplace
  • DeskShell – 陈旧,网站离线
  • node-webkit – 重命名为NW.js
  • XULRunner项目陷入僵局,并且非常落后。

这个答案被复制了多个问题,这些参考大多是为了方便更新。

  • 将一个node.js webapp打包成一个普通的桌面应用程序
  • 将一个Node.js应用程序打包为一个osx应用程序

我build议看看Topcube,它的目标是“为节点开发人员提供一种使用HTML5 + CSS3作为GUI平台的节点服务器的桌面GUI。” github上的Topcube 。

目前有很多方法可以做到这一点。

封装节点+ html5应用程序的空间明显是赢家,现在是Electron(由Atom,VSCode,Slack,Discord等使用)。

您还可以使用任何其他语言打包为一个应用程序(使用这些语言/堆栈的工具),并检查节点安装,与节点启动“服务器”脚本,然后启动默认浏览器(或一些Web视图组件,由一些其他的手段),最后设置位置到节点服务。 这是一个非常轻量且高效的方法,但是不如像Electron那样与OS集成。

电子的主要竞争对手是NW.js。 据我所知,NW.js的主要特点是,Electron还没有编译/混淆。 而Electron使自动更新变得简单。

https://electron.atom.io/ https://nwjs.io/

你不能用bash脚本来做这个吗? 我不知道提供详细信息,但这可能是要走的路。