我有一個用於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來創建清單文件,它應該很好。
我還沒有脫離危險區域,因爲開發人員可能需要一個服務器端模塊,它具有很大的深度。但是如果它發生的話,我會考慮一下。
更多關注...
如果我得到這個權利。我可以擁有幾乎相同模塊的兩個文件夾。一個是server_modules,另一個是desktop_modules。如果我deply在線版本,我保留server_modules。 如果我錯了,請糾正我,但這會制動應用程序?由於Node.js期望在node_modules中找到模塊? –
1-你可以有相同的模塊或分開的模塊都可以工作 –
2-整個想法nodejs不僅使用「node_modules」加載它使用的模塊優先搜索從「node_modules」文件夾開始的模塊項目,它將具有最高優先級 –