2012-06-12 57 views
15

我想爲我們的開發人員用來管理其開發環境的一系列終端命令構建一個接口。我想嘗試在node.js中構建它。將一個Node.js應用程序打包爲一個osx應用程序

現在,我想我可以使用express等創建它作爲HTML5/CSS3/JS應用程序...然後想要將它打包爲本地osx應用程序。意思是,我可以發送一個應用程序,他們雙擊並運行,但是它啓動Chrome瀏覽器並導航到訪問該腳本的localhost:port服務器,或者只是啓動服務器並指示用戶轉到url 。無論哪種方式都很好。

我這樣做是因爲我需要訪問本地系統以便能夠配置許多事物並與任意數量的正在運行的(無頭虛擬機)進行交互。所以我不能簡單地從服務器提供此服務,並讓他們訪問該網站。

任何想法?

謝謝

路易斯

+0

這實際上必須是一個的.app包?如果沒有,創建一個執行所有啓動東西的shell腳本可能會更簡單,只需調用MyApp.command,並將其與本地構建的節點以及您的源代碼一起打包到zip文件或dmg或其他內容中。如果它確實需要一個.app,最簡單的解決方案將涉及到直接啓動JS腳本,所以你必須編寫js代碼來爲用戶啓動瀏覽器(並不困難)。如果它需要是一個.app,並且你不能修改JS,那麼你需要創建一個自定義的.app包裝器。那麼,你想要哪個? – abarnert

+1

PS,目前還沒有相當於py2app等的node.js,這將使中間解決方案變得非常簡單。據我所知,http://appjs.org/目前是最有希望的選擇,但目前的版本在Mac上無法使用...所以即使你去了,你仍然需要做很多工作理論上「簡單」的方式。 – abarnert

+0

PPS,另請參閱https://groups.google.com/group/nodejs/browse_thread/thread/f90b3f1c747d20b3(雖然這更多的是將WebKit GUI捆綁到應用程序中,而不是啓動用戶的默認瀏覽器)。 – abarnert

回答

2

如果你從源代碼編譯node.js每個節點從JavaScript文件lib文件夾將被納入二進制文件。同樣的方法可以將你的代碼打包到二進制文件中。

我不熟悉如何創建Mac OSX軟件包,但最終它似乎不是very hard。只需將你的自定義節點二進制打包成一個

3

退房AppJS:http://appjs.com/ -

聽起來像是不錯的比賽:)

+3

根據https://twitter.com/appjs/status/394911856910823424 - appjs被https://github.com/rogerwang/node-webkit取代 –

7

選項1:electron(又名原子殼)

這是github的Atom編輯器使用的shell。它與node-webkit非常相似,不過它將首先運行腳本,並且必須爲用戶創建一個視圖/窗口。還有一些其他的細微差異,但值得一看。


選項2:NW.js以前節點的WebKit

要點是,它基本上擴展了JS引擎爲你寫一個基於Web的應用程序支持節點的擴展對象模型和模塊......你然後將你的package.json start.html模塊和js文件打包成一個壓縮文件(帶有.nw擴展名),並用nw(.exe)運行它..有windows,mac和linux版本可用。


選項3:ThrustNode Adapter

這是一個非常失去與的IPC信道向發射應用周圍的webkit /鉻結合。您可以使用消息通道,也可以將應用程序編寫爲節點中更傳統的服務器端應用程序,並控制窗口啓動。這可能適合你。

Thrust具有多種語言的綁定。我只把它放在MacGapNode之前,因爲我首先傾向於使用跨平臺選項。


方案4:MacGapNode(OSX只)

MacGap與節點集成(似乎越來越陳舊)


旁白:服務...

我可以」不要說OSX就是一個.App,但可以在NodeJS中創建一個後臺服務安裝程序,並在桌面上創建一個「本地」站點的鏈接。大多數瀏覽器可以選擇不顯示所有功能(我知道特別是firefox)。

我知道你的問題是特別針對OSX的,但是在windows中你可以使用NSSM來運行任何服務,並且我已經在windows中使用它來實現基於NodeJS的服務。我認爲上面的其他一些選項更好取決於您的需求。


刪除:

  • nexe - 陳舊/無人維護
  • AppJS - 陳舊,網站離線
  • - 與DeskShell
  • DeskShell 取代 - 重命名爲NW.js
  • XULRunner 項目停滯不前,並且非常落後。

這個答案被複制了多個問題,這些提法大多用於更新方便。

相關問題