我有一个用于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”文件夹开始的模块项目,它将具有最高优先级 –