【发布时间】:2016-09-07 20:59:50
【问题描述】:
我有一个用于 Web 和 NodeWebkit (NW) 应用程序的代码库。 我使用以下堆栈: - 反应 - 哈皮 - 续集 - Windows 环境
应用程序的 Web 版本使用 MySQL,而 NW 使用 Sqlite。一切正常。我有一个配置文件,可以根据我的需要(网络或 NW)编译应用程序。
我现在面临的问题是如何部署 NW 应用程序。想法是向客户提供 NW 应用程序,他将在其中单击图标打开它。
由于我使用的是 NW 版本的 Node,并且应用程序使用了许多存储在 node_modules 中的模块,我面临着如何打包它们的挑战。
我的想法是制作一个 Windows 安装程序。用户将单击它,安装程序会将所有文件提取到目标位置。并在用户桌面上制作一个图标来运行它。
问题在于 Windows 文件名 limitation。在 node_modules 中,有许多子目录完全违反了 Windows 的限制。我什至无法复制 node_modules 文件夹。我什至不能删除它。好吧,如果我压缩它,我可以复制它......或手动删除长文件夹。
我还没有开始研究安装程序,但我想我会用这种方法碰壁。
有人知道如何进行此部署吗? 如何在 NW 中集成 NPM3?
我现在的计划是制作 Windows 安装程序。该 Windows 安装程序将正常安装应用程序文件。 node_modules 将预先压缩并放置在安装程序中。然后安装程序将简单地将其解压缩到目标文件夹。
我会在这里发布我的进度。
这里有一些更新。 这里的主要问题是 node_modules 的深度。我在 node_modules 中有很多模块,经过一番思考,我发现那里有一个简单的规则。一些模块是服务器端模块,而其他模块则由 react 使用。 而且由于 Webpack 已经创建了一个巨大的文件,其中已经包含了所有模块,所以我根本不需要它们。
所以我删除了所有前端模块(babel 模块、react-*),只剩下服务器端(Hapi、sequelize...)。奇迹发生了,应用程序在启动时运行速度更快。
我将使用 Inno setup 制作清单文件,应该很好。
我仍然没有脱离危险区域,因为开发人员可能需要一个服务器端模块,它具有很大的深度。但如果发生这种情况,我会考虑的。
更多关注...
【问题讨论】:
标签: javascript c# reactjs node-webkit hapijs