我有一个Web和NodeWebkit(NW)应用程序的代码库。 我使用以下堆栈: - 反应 - 哈皮 - Sequelize - Windows环境
应用程序的Web版本使用MySQL,而NW使用Sqlite。一切正常。我有配置文件,编译我需要的应用程序(web或NW)。
我现在面临的问题是如何部署NW应用程序。想法是向客户提供NW应用程序,然后单击该图标打开它。
由于我使用Node作为NW版本,并且应用程序使用了许多存储在node_modules中的模块,因此我面临着如何将其打包的挑战。
我的想法是制作Windows安装程序。用户将单击它,安装程序将提取所有文件到目标。并在用户桌面上创建一个图标来运行它。
问题在于Windows文件名limitation。在node_modules中,有许多子目录只是违反Windows限制。我甚至无法复制node_modules文件夹。我甚至无法删除它。我确定我可以复制它如果我压缩它...或手动删除长文件夹。
我还没有开始使用安装程序,但我想我会用这种方法搞定。
有谁知道如何进行此部署? 如何在NW中集成NPM3?
我现在的计划是制作Windows安装程序。 Windows安装程序将正常安装应用程序文件。 node_modules将先前压缩并放在安装程序中。然后,安装程序将其简单地解压缩到destionation文件夹。
我会在这里发布我的进展。
这里有些更新。 这里的主要问题是node_modules的深度。我在node_modules中有很多模块,经过一番思考后我发现有一个简单的规则。一些模块是服务器端模块,而其他模块则由react使用。 而且由于Webpack已经创建了一个包含所有模块的大文件,我根本就不需要它们。
所以我删除了所有前端模块(babel模块,react- *),只剩下服务器端(Hapi,sequelize ...)。奇迹发生了,应用程序运行并且在启动时速度更快。
我将使用Inno设置制作清单文件,它应该是好的。
我仍然没有脱离危险区域,因为开发人员可能需要一个服务器端模块,它具有巨大的深度。但是如果它发生的话,我会考虑它。
更多关注......
答案 0 :(得分:1)
实际上在nodejs中,您可以执行以下操作:
1 - 在项目文件夹中创建另一个文件夹,例如" server_modules"
2 - 在创建的文件夹中创建另一个package.json文件并安装服务器所需的所有模块
3 - 所有这些模块都可以使用require('module_name')
作为普通的node_modules访问,您可以删除" server_modules"如果您不需要桌面版,请打包文件夹
注意:一些开发人员使用这种方法来获取nodejs中的微服务,但它在您的情况下很有用