2016-05-12 130 views
0

我有一個用於Web和NodeWebkit(NW)應用程序的代碼庫。 我用下面的堆棧: - 陣營 - 哈皮 - Sequelize - 應用程序的Windows環境NodeWebkit - 部署應用程序

網頁版使用MySQL,而NW使用SQLite。它一切正常。我有配置文件,編譯我需要的應用程序(web或NW)。

我現在面臨的問題是如何部署NW應用程序。想法是向客戶提供NW應用程序,在那裏他將打開它,點擊圖標。

因爲我使用節點的NW版本,並且應用程序使用存儲在node_modules中的許多模塊,所以我面臨着如何將它打包的挑戰。

我的想法是製作一個Windows安裝程序。用戶將點擊它,安裝程序將提取所有文件到目的地。並在用戶桌面上製作一個圖標來運行它。

問題出在Windows文件名limitation。在node_modules內部,有許多子目錄僅僅違反了Windows的限制。我甚至不能複製node_modules文件夾。我甚至不能刪除它。那麼確定我可以複製它如果我壓縮它...或手動刪除長文件夾。

我還沒有開始在安裝程序上工作,但我想我會用這種方法撞牆。

有沒有人有一個想法如何進行此部署? 如何將NPM3整合到NW中?

我現在的計劃是製作Windows安裝程序。該Windows安裝程序將正常安裝應用程序文件。 node_modules將先被壓縮並放置在安裝程序中。然後安裝程序將它簡單地解壓縮到destionation文件夾。

我會在這裏發表我的進展。

這裏有些更新。 這裏的主要問題是node_modules的深度。我在node_modules中有很多模塊,經過一番思考,我發現有一個簡單的規則。有些模塊是服務器端模塊,而其他模塊是通過反應使用的。 由於Webpack已經創建了一個包含所有模塊的大文件,我根本不需要它們。

所以我已經刪除了所有的前端模塊(babel模塊,react- *),並且只留下了服務器端(Hapi,sequelize ...)。奇蹟發生了,應用程序運行並且在啓動時速度更快。

我打算使用Inno setup來創建清單文件,它應該很好。

我還沒有脫離危險區域,因爲開發人員可能需要一個服務器端模塊,它具有很大的深度。但是如果它發生的話,我會考慮一下。

更多關注...

回答

1

實際上是在你的NodeJS可以做到以下幾點:

你的項目文件夾內1 - 創建另一個文件夾,例如「server_modules」

2,在創建的文件夾創建其他的package.json文件,並安裝任何需要服務器那裏

3 - 所有這些模塊的模塊將採用require('module_name')是正常node_modules訪問,當您打包的桌面版本,如果你不需要它

你可以刪除「server_modules」文件夾

注意:這種方法被一些開發者用來在nodejs中實現微服務,但它在你的情況下很有用

+0

如果我得到這個權利。我可以擁有幾乎相同模塊的兩個文件夾。一個是server_modules,另一個是desktop_modules。如果我deply在線版本,我保留server_modules。 如果我錯了,請糾正我,但這會制動應用程序?由於Node.js期望在node_modules中找到模塊? –

+0

1-你可以有相同的模塊或分開的模塊都可以工作 –

+1

2-整個想法nodejs不僅使用「node_modules」加載它使用的模塊優先搜索從「node_modules」文件夾開始的模塊項目,它將具有最高優先級 –