【问题标题】:Package a Node.js application as an OS X application将 Node.js 应用程序打包为 OS X 应用程序
【发布时间】:2012-06-15 17:19:44
【问题描述】:

我想为我们的开发人员用来管理他们的开发环境的一系列终端命令构建一个界面。我想尝试在 Node.js 中构建它。

现在,我想我可以使用 Express.js 等将其创建为 HTML5/CSS 3/JavaScript 应用程序...然后想将其打包为原生 OS X 应用程序。意思是,一个我可以发送给他们的应用程序,他们双击并运行,但是要么启动 Chrome 浏览器并导航到 localhost:port 服务器,该服务器命中脚本,要么只是启动服务器并指示用户转到网址。无论哪种方式都可以。

我这样做是因为我需要访问本地系统才能配置许多东西并与任意数量的运行(无头虚拟机)交互。所以我不能简单地从服务器提供这个服务并让他们访问网站。

有什么想法吗?

【问题讨论】:

  • 这真的必须是 .app 包吗?如果没有,创建一个执行所有启动内容的 shell 脚本可能会更简单,只需调用该 MyApp.command,并将其与本地构建的节点和源文件一起打包到 zipfile 或 dmg 或其他任何内容中。如果它确实需要是 .app,最简单的解决方案就是直接启动 JS 脚本,因此您必须编写 js 代码来为用户启动浏览器(并不难)。如果它需要是一个 .app 并且你不能修改 JS,那么你需要创建一个自定义的 .app 包装器。那么,你想要哪个?
  • PS,(还)没有等效于 py2app 等的 node.js,这将使中间解决方案非常容易。据我了解,appjs.org 是目前最有前途的选择,但当前版本无法在 Mac 上运行……所以即使你使用理论上的“简单” 方式。
  • PPS,另请参阅groups.google.com/group/nodejs/browse_thread/thread/…(尽管这更多是关于将 WebKit GUI 捆绑到应用程序中,而不是启动用户的默认浏览器)。
  • 有人知道这方面的进展吗?看起来 appjs 已被弃用。

标签: javascript node.js macos native packaging


【解决方案1】:

选项 1:Electron(以前的 atom-shell)

这是 GitHub 的 Atom 和 Microsoft 的 Code 编辑器使用的 shell。它与 node-webkit 非常相似,尽管它会首先运行脚本,并且您必须为用户创建一个视图/窗口。还有一些其他的细微差别,但值得一看。


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

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


选项 3:NeutralinojsGithub

Neutralinojs 是一个轻量级和可移植的桌面应用程序开发框架。它允许您使用 JavaScript、HTML 和 CSS 开发轻量级跨平台桌面应用程序。您可以使用任何编程语言(通过扩展 IPC)扩展 Neutralinojs,并将 Neutralinojs 用作任何源文件的一部分(通过子进程 IPC)。


选项 4:MacGapNode(仅限 OS X

MacGap 与 Node.js 集成(它似乎变得陈旧)


选项 5:TauriGithub

Tauri 是一个工具包,可帮助开发人员为主要桌面平台开发应用程序 - 几乎可以使用任何现有的前端框架。核心是用 Rust 构建的,CLI 利用 Node.js 使 Tauri 成为一种真正的多语言方法来创建和维护出色的应用程序。


除此之外:服务...

我不能代表 OS X 作为一个 .App,但很有可能在 Node.js 中创建一个后台服务安装,并在桌面上创建一个“本地”站点的链接。大多数浏览器都可以选择不显示所有功能(我知道 Firefox 尤其如此)。

我知道您的问题特别针对 OS X,但在 Windows 中,您可以使用 NSSM 将任何东西作为服务运行,我已将它用于 Windows 中基于 Node.js 的服务。不过,我认为上面的其他一些选项会更好,具体取决于您的需求。


已删除:


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

【讨论】:

  • @JasonJ.Nathan 谢谢,已更新以移除推力,并添加 Carlo。
  • Carlo 的有趣之处在于它假设 Chrome 已安装。确实很有趣:)
  • Carlo 现已正式无人维护 - 将其从列表中删除可能是有意义的 @Tracker1(来源:github.com/GoogleChromeLabs/carlo/issues/…
  • Tauri 应该很快就会出现在这个列表中
  • @st_phan 已弃用 carlo
【解决方案2】:

这是关于安装程序 (.pkg) 主题的截屏视频 + 文章:

How to create an OS X pkg for NodeJS apps

至于 .app,我还不确定,但我很兴奋。

还有:

【讨论】:

  • 你能在这里总结一下吗?这些链接可能随时断开。
【解决方案3】:

查看AppJS - “使用 HTML、CSS 和 JavaScript 为 Linux、Windows 和 Mac 构建桌面应用程序”

听起来很不错:)

【讨论】:

【解决方案4】:

查看NW.js - 这是英特尔赞助的一个项目,用于为桌面打包 Node.js 应用程序。

具体见Creating Desktop Applications With node-webkit

【讨论】:

    【解决方案5】:

    如果您从源代码编译 Node.js,则 Node.js 的 lib 文件夹中的每个 JavaScript 文件都将包含在二进制文件中。同样的方式可以将您的代码打包到二进制文件中。

    我不熟悉 Mac OS X 包是如何创建的,但最后似乎不是very hard。只需将您的自定义 Node.js 二进制文件打包成一个即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 2015-12-09
      • 2011-10-13
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 2012-12-02
      相关资源
      最近更新 更多